PageSourceSearch

http://hidevops.com/1644/%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D8%…8%B1%D9%87-%D8%AF%D8%A7%DA%A9%D8%B1-docker/

html hidevops.com collected 2026-10-03 02:34:01 UTC 225,819 bytes, 856 lines download raw bytes

1<!DOCTYPE html>
2<html dir="rtl" lang="fa-IR" prefix="og: http://ogp.me/ns#" class="no-js no-svg">
3<head>
4<meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1">
6<link rel="profile" href="https://gmpg.org/xfn/11">
7
8<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
8
9<title>مصاحبه چارلز اندرسون با جیمز ترنبل درباره داکر - Docker - سلام دواپس | Hi DevOps</title>
10<meta name='robots' content='max-image-preview:large' />
11	<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
12	<link rel="dns-prefetch" href="http://static.hupso.com/share/js/share_toolbar.js"><link rel="preconnect" href="http://static.hupso.com/share/js/share_toolbar.js"><link rel="preload" href="http://static.hupso.com/share/js/share_toolbar.js"><meta property="og:image" content="http://hidevops.com/wp-content/uploads/2019/11/JamesTrunbleAndCharlesAnderson4-300x213.png"/>
13<!-- This site is optimized with the Yoast SEO Premium plugin v4.7.1 - https://yoast.com/wordpress/plugins/seo/ -->
14<meta name="description" content="مصاحبه چارلز اندرسون با جیمز ترنبل، در مورد Docker. داکر ابزاری است که توجه زیادی به خود جلب کرده است (خصوصاً در معماری‌های مبتنی بر ریزسرویس‌ها)"/>
15<meta name="robots" content="noodp"/>
16<link rel="canonical" href="http://hidevops.com/1644/%d9%85%d8%b5%d8%a7%d8%ad%d8%a8%d9%87-%d8%a8%d8%a7-%d8%ac%db%8c%d9%85%d8%b2-%d8%aa%d8%b1%d9%86%d8%a8%d9%84-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-%d8%af%d8%a7%da%a9%d8%b1-docker/" />
17<meta property="og:locale" content="fa_IR" />
18<meta property="og:type" content="article" />
19<meta property="og:title" content="مصاحبه چارلز اندرسون با جیمز ترنبل درباره داکر - Docker - سلام دواپس | Hi DevOps" />
20<meta property="og:description" content="مصاحبه چارلز اندرسون با جیمز ترنبل، در مورد Docker. داکر ابزاری است که توجه زیادی به خود جلب کرده است (خصوصاً در معماری‌های مبتنی بر ریزسرویس‌ها)" />
21<meta property="og:url" content="http://hidevops.com/1644/%d9%85%d8%b5%d8%a7%d8%ad%d8%a8%d9%87-%d8%a8%d8%a7-%d8%ac%db%8c%d9%85%d8%b2-%d8%aa%d8%b1%d9%86%d8%a8%d9%84-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-%d8%af%d8%a7%da%a9%d8%b1-docker/" />
22<meta property="og:site_name" content="سلام دواپس | Hi DevOps" />
23<meta property="article:publisher" content="https://www.facebook.com/HiDevOpsCom" />
24<meta property="article:author" content="https://www.facebook.com/ShariatiOmid" />
25<meta property="article:tag" content="#Container" />
26<meta property="article:tag" content="#Containerization" />
27<meta property="article:tag" content="#ContinuousIntegration" />
28<meta property="article:tag" content="#DockerFile" />
29<meta property="article:tag" content="#DockerHub" />
30<meta property="article:tag" content="#DockerImage" />
31<meta property="article:tag" content="#Hardening" />
32<meta property="article:tag" content="#hiDevOps" />
33<meta property="article:tag" content="#Hypervisor" />
34<meta property="article:tag" content="#IaaS" />
35<meta property="article:tag" content="#ImmutableInfrastructure" />
36<meta property="article:tag" content="#Logstash" />
37<meta property="article:tag" content="#MicroService" />
38<meta property="article:tag" content="#OpenStack" />
39<meta property="article:tag" content="#PaaS" />
40<meta property="article:tag" content="#Provisioning" />
41<meta property="article:tag" content="#PuppetLabs" />
42<meta property="article:tag" content="#Salt" />
43<meta property="article:tag" content="#SOA" />
44<meta property="article:tag" content="#Venmo" />
45<meta property="article:tag" content="#Virtualization" />
46<meta property="article:tag" content="#VirtualMachine" />
47<meta property="article:tag" content="#VM" />
48<meta property="article:tag" content="#داکر" />
49<meta property="article:tag" content="#دوآپس" />
50<meta property="article:tag" content="#کانتینر" />
51<meta property="article:tag" content="#ماشین_مجازی" />
52<meta property="article:tag" content="#مجازی_سازی" />
53<meta property="article:tag" content="#محفظه" />
54<meta property="article:tag" content="#مدیر_سیستم" />
55<meta property="article:tag" content="#معماری_سرویس_گرا" />
56<meta property="article:tag" content="#هاردنینگ" />
57<meta property="article:tag" content="Agile" />
58<meta property="article:tag" content="Ansible" />
59<meta property="article:tag" content="Chef" />
60<meta property="article:tag" content="CI" />
61<meta property="article:tag" content="Development" />
62<meta property="article:tag" content="DevOps" />
63<meta property="article:tag" content="Docker" />
64<meta property="article:tag" content="Puppet" />
65<meta property="article:tag" content="SysAdmin" />
66<meta property="article:tag" content="چابک" />
67<meta property="article:tag" content="میکروسرویس" />
68<meta property="article:tag" content="یثرخحس" />
69<meta property="article:section" content="DevOps" />
70<meta property="article:published_time" content="2019-11-13T16:30:00+03:30" />
71<meta property="article:modified_time" content="2020-03-31T14:14:12+04:30" />
72<meta property="og:updated_time" content="2020-03-31T14:14:12+04:30" />
73<meta property="og:image" content="http://hidevops.com/wp-content/uploads/2019/11/JamesTrunbleAndCharlesAnderson4.png" />
74<meta property="og:image:width" content="918" />
75<meta property="og:image:height" content="651" />
76<meta name="twitter:card" content="summary" />
77<meta name="twitter:description" content="مصاحبه چارلز اندرسون با جیمز ترنبل، در مورد Docker. داکر ابزاری است که توجه زیادی به خود جلب کرده است (خصوصاً در معماری‌های مبتنی بر ریزسرویس‌ها)" />
78<meta name="twitter:title" content="مصاحبه چارلز اندرسون با جیمز ترنبل درباره داکر - Docker - سلام دواپس | Hi DevOps" />
79<meta name="twitter:site" content="@HiDevOpsCom" />
80<meta name="twitter:image" content="http://hidevops.com/wp-content/uploads/2019/11/JamesTrunbleAndCharlesAnderson4.png" />
81<meta name="twitter:creator" content="@OShariati" />
82<meta property="DC.date.issued" content="2019-11-13T16:30:00+03:30" />
83<!-- / Yoast SEO Premium plugin. -->
84
85<link rel='dns-prefetch' href='//fonts.googleapis.com' />
86<link href='https://fonts.gstatic.com' crossorigin rel='preconnect' />
87<link rel="alternate" type="application/rss+xml" title="سلام دواپس | Hi DevOps &raquo; خوراک" href="http://hidevops.com/feed/" />
88<link rel="alternate" type="application/rss+xml" title="سلام دواپس | Hi DevOps &raquo; خوراک دیدگاه‌ها" href="http://hidevops.com/comments/feed/" />
89<link rel="alternate" type="application/rss+xml" title="سلام دواپس | Hi DevOps &raquo; مصاحبه چارلز اندرسون با جیمز ترنبل درباره داکر &#8211; Docker خوراک دیدگاه‌ها" href="http://hidevops.com/1644/%d9%85%d8%b5%d8%a7%d8%ad%d8%a8%d9%87-%d8%a8%d8%a7-%d8%ac%db%8c%d9%85%d8%b2-%d8%aa%d8%b1%d9%86%d8%a8%d9%84-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-%d8%af%d8%a7%da%a9%d8%b1-docker/feed/" />
90<script>
91window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/hidevops.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.9"}};
92/*! This file is auto-generated */
93!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
94</script>
94
95<style id='wp-emoji-styles-inline-css'>
96
97	img.wp-smiley, img.emoji {
98		display: inline !important;
99		border: none !important;
100		box-shadow: none !important;
101		height: 1em !important;
102		width: 1em !important;
103		margin: 0 0.07em !important;
104		vertical-align: -0.1em !important;
105		background: none !important;
106		padding: 0 !important;
107	}
108</style>
109<link rel='stylesheet' id='wp-block-library-rtl-css' href='http://hidevops.com/wp-includes/css/dist/block-library/style-rtl.min.css?ver=6.7.9' media='all' />
110<style id='wp-block-library-theme-inline-css'>
111.wp-block-audio :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio :where(figcaption){color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed :where(figcaption){color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}:root :where(.wp-block-image figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme :root :where(.wp-block-image figcaption){color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote:where(.has-text-align-right){border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote:where(.has-text-align-center){border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote:where(.is-style-plain){border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table :where(figcaption){color:#ffffffa6}.wp-block-video :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video :where(figcaption){color:#ffffffa6}.wp-block-video{margin:0 0 1em}:root :where(.wp-block-template-part.has-background){margin-bottom:0;margin-top:0;padding:1.25em 2.375em}
112</style>
113<link rel='stylesheet' id='wpzoom-social-icons-block-style-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/block/dist/style-wpzoom-social-icons.css?ver=4.3.4' media='all' />
114<style id='classic-theme-styles-inline-css'>
115/*! This file is auto-generated */
116.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
117</style>
118<style id='global-styles-inline-css'>
119:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,
1190,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
119.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
120:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
121:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
122:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
123</style>
124<link rel='stylesheet' id='csbwf_sidebar_style-css' href='http://hidevops.com/wp-content/plugins/custom-share-buttons-with-floating-sidebar/css/csbwfs.css?ver=6.7.9' media='all' />
125<link rel='stylesheet' id='markdown_git-css' href='http://hidevops.com/wp-content/plugins/documents-from-git/css/markdown-git.css?ver=6.7.9' media='all' />
126<link rel='stylesheet' id='github_markdown-css' href='http://hidevops.com/wp-content/plugins/documents-from-git/css/github-markdown.css?ver=6.7.9' media='all' />
127<link rel='stylesheet' id='nbconvert_git-css' href='http://hidevops.com/wp-content/plugins/documents-from-git/css/nbconvert.css?ver=6.7.9' media='all' />
128<link rel='stylesheet' id='hupso_css-css' href='http://hidevops.com/wp-content/plugins/hupso-share-buttons-for-twitter-facebook-google/style.css?ver=6.7.9' media='all' />
129<link rel='stylesheet' id='twentyseventeen-fonts-css' href='https://fonts.googleapis.com/css?family=Libre+Franklin%3A300%2C300i%2C400%2C400i%2C600%2C600i%2C800%2C800i&#038;subset=latin%2Clatin-ext&#038;display=fallback' media='all' />
130<link rel='stylesheet' id='twentyseventeen-style-css' href='http://hidevops.com/wp-content/themes/twentyseventeen/style.css?ver=20201208' media='all' />
131<link rel='stylesheet' id='twentyseventeen-block-style-css' href='http://hidevops.com/wp-content/themes/twentyseventeen/assets/css/blocks.css?ver=20220524' media='all' />
132<!--[if lt IE 9]>
133<link rel='stylesheet' id='twentyseventeen-ie8-css' href='http://hidevops.com/wp-content/themes/twentyseventeen/assets/css/ie8.css?ver=20161202' media='all' />
134<![endif]-->
135<link rel='stylesheet' id='wpzoom-social-icons-socicon-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/css/wpzoom-socicon.css?ver=1732956157' media='all' />
136<link rel='stylesheet' id='wpzoom-social-icons-genericons-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/css/genericons.css?ver=1732956157' media='all' />
137<link rel='stylesheet' id='wpzoom-social-icons-academicons-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/css/academicons.min.css?ver=1732956157' media='all' />
138<link rel='stylesheet' id='wpzoom-social-icons-font-awesome-3-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/css/font-awesome-3.min.css?ver=1732956157' media='all' />
139<link rel='stylesheet' id='dashicons-css' href='http://hidevops.com/wp-includes/css/dashicons.min.css?ver=6.7.9' media='all' />
140<link rel='stylesheet' id='wpzoom-social-icons-styles-css' href='http://hidevops.com/w
140p-content/plugins/social-icons-widget-by-wpzoom/assets/css/wpzoom-social-icons-styles.css?ver=1732956157' media='all' />
141<link rel='preload' as='font'  id='wpzoom-social-icons-font-academicons-woff2-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/font/academicons.woff2?v=1.9.2' type='font/woff2' crossorigin />
142<link rel='preload' as='font'  id='wpzoom-social-icons-font-fontawesome-3-woff2-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/font/fontawesome-webfont.woff2?v=4.7.0' type='font/woff2' crossorigin />
143<link rel='preload' as='font'  id='wpzoom-social-icons-font-genericons-woff-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/font/Genericons.woff' type='font/woff' crossorigin />
144<link rel='preload' as='font'  id='wpzoom-social-icons-font-socicon-woff2-css' href='http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/font/socicon.woff2?v=4.3.4' type='font/woff2' crossorigin />
145<script src="http://hidevops.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
vendor: 1 bytes, line 145
145
146<script id="jquery-core-js-after">
147	  var windWidth=jQuery( window ).width();
148	  //alert(windWidth);
149	  var animateWidth;
150	  var defaultAnimateWidth;	jQuery(document).ready(function() { 
151	animateWidth="55";
152    defaultAnimateWidth= animateWidth-10;
153	animateHeight="49";
154	defaultAnimateHeight= animateHeight-2;jQuery("div.csbwfsbtns a").hover(function(){
155  jQuery(this).animate({width:animateWidth});
156  },function(){
157    jQuery(this).stop( true, true ).animate({width:defaultAnimateWidth});
158  });jQuery("div.csbwfs-show").hide();
159  jQuery("div.csbwfs-show a").click(function(){
160    jQuery("div#csbwfs-social-inner").show(500);
161     jQuery("div.csbwfs-show").hide(500);
162    jQuery("div.csbwfs-hide").show(500);
163    csbwfsSetCookie("csbwfs_show_hide_status","active","1");
164  });
165  
166  jQuery("div.csbwfs-hide a").click(function(){
167     jQuery("div.csbwfs-show").show(500);
168      jQuery("div.csbwfs-hide").hide(500);
169     jQuery("div#csbwfs-social-inner").hide(500);
170     csbwfsSetCookie("csbwfs_show_hide_status","in_active","1");
171  });var button_status=csbwfsGetCookie("csbwfs_show_hide_status");
172    if (button_status =="in_active") {
173      jQuery("div.csbwfs-show").show();
174      jQuery("div.csbwfs-hide").hide();
175     jQuery("div#csbwfs-social-inner").hide();
176    } else {
177      jQuery("div#csbwfs-social-inner").show();
178     jQuery("div.csbwfs-show").hide();
179    jQuery("div.csbwfs-hide").show();
180    }});
181 csbwfsCheckCookie();function csbwfsSetCookie(cname,cvalue,exdays) {
182    var d = new Date();
183    d.setTime(d.getTime() + (exdays*24*60*60*1000));
184    var expires = "expires=" + d.toGMTString();
185    document.cookie = cname+"="+cvalue+"; "+expires;
186}
187
188function csbwfsGetCookie(cname) {
189    var name = cname + "=";
190    var ca = document.cookie.split(';');
191    for(var i=0; i<ca.length; i++) {
192        var c = ca[i];
193        while (c.charAt(0)==' ') c = c.substring(1);
194        if (c.indexOf(name) != -1) {
195            return c.substring(name.length, c.length);
196        }
197    }
198    return "";
199}
200
201function csbwfsCheckCookie() {
202	var hideshowhide = ""
203    var button_status=csbwfsGetCookie("csbwfs_show_hide_status");
204    if (button_status != "") {
205        
206    } else {
207        csbwfsSetCookie("csbwfs_show_hide_status", "active",1);
208    }
209    if(hideshowhide=="yes")
210    {
211    csbwfsSetCookie("csbwfs_show_hide_status", "active",0);
212    }
213}
214</script>
vendor: 1 bytes, line 214
214
215<script src="http://hidevops.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
vendor: 1 bytes, line 215
215
216<script src="http://hidevops.com/wp-content/plugins/fixed-menu-anchor/js/fixed-menu-anchor.js?ver=1" id="fixed-menu-anchor-js"></script>
216
217<!--[if lt IE 9]>
218<script src="http://hidevops.com/wp-content/themes/twentyseventeen/assets/js/html5.js?ver=20161020" id="html5-js"></script>
218
219<![endif]-->
220<link rel="https://api.w.org/" href="http://hidevops.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="http://hidevops.com/wp-json/wp/v2/posts/1644" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://hidevops.com/xmlrpc.php?rsd" />
221<link rel="stylesheet" href="http://hidevops.com/wp-content/themes/twentyseventeen/rtl.css" media="screen" /><meta name="generator" content="WordPress 6.7.9" />
222<link rel='shortlink' href='http://hidevops.com/?p=1644' />
223<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="http://hidevops.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fhidevops.com%2F1644%2F%25d9%2585%25d8%25b5%25d8%25a7%25d8%25ad%25d8%25a8%25d9%2587-%25d8%25a8%25d8%25a7-%25d8%25ac%25db%258c%25d9%2585%25d8%25b2-%25d8%25aa%25d8%25b1%25d9%2586%25d8%25a8%25d9%2584-%25d8%25af%25d8%25b1%25d8%25a8%25d8%25a7%25d8%25b1%25d9%2587-%25d8%25af%25d8%25a7%25da%25a9%25d8%25b1-docker%2F" />
224<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="http://hidevops.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fhidevops.com%2F1644%2F%25d9%2585%25d8%25b5%25d8%25a7%25d8%25ad%25d8%25a8%25d9%2587-%25d8%25a8%25d8%25a7-%25d8%25ac%25db%258c%25d9%2585%25d8%25b2-%25d8%25aa%25d8%25b1%25d9%2586%25d8%25a8%25d9%2584-%25d8%25af%25d8%25b1%25d8%25a8%25d8%25a7%25d8%25b1%25d9%2587-%25d8%25af%25d8%25a7%25da%25a9%25d8%25b1-docker%2F&#038;format=xml" />
225<script type="text/javascript">var fixedMenuAnchorCssClassesToBeIgnored = "";var fixedMenuAnchorMaximumViewportWidth = "0";var fixedMenuAnchorMaximumViewportWidthDistance = "0";var fixedMenuAnchorUserDefinedDistance = "170";</script>
225<script type="text/javascript">
226	window._wp_rp_static_base_url = 'https://wprp.zemanta.com/static/';
227	window._wp_rp_wp_ajax_url = "http://hidevops.com/wp-admin/admin-ajax.php";
228	window._wp_rp_plugin_version = '3.6.4';
229	window._wp_rp_post_id = '1644';
230	window._wp_rp_num_rel_posts = '4';
231	window._wp_rp_thumbnails = true;
232	window._wp_rp_post_title = '%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87+%DA%86%D8%A7%D8%B1%D9%84%D8%B2+%D8%A7%D9%86%D8%AF%D8%B1%D8%B3%D9%88%D9%86+%D8%A8%D8%A7+%D8%AC%DB%8C%D9%85%D8%B2+%D8%AA%D8%B1%D9%86%D8%A8%D9%84+%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87+%D8%AF%D8%A7%DA%A9%D8%B1+-+Docker';
233	window._wp_rp_post_tags = ['%23venmo', 'puppet', '%23hardening', '%23%3F%3F%3F%3F%3F_%3F%3F%3F%3F%3F', '%23microservice', 'agile', '%23soa', 'docker', '%23dockerimage', '%23%3F%3F%3F%3F%3F%3F%3F', '%23logstash', '%23%3F%3F%3F%3F%3F%3F%3F%3F', '%23salt', 'devops', '%23dockerhub', '%23%3F%3F%3F%3F', '%3F%3F%3F%3F%3F%3F', '%23immutableinfrastructure', '%23%3F%3F%3F%3F%3F%3F_%3F%3F%3F%3F%3F_%3F%3F', '%23puppetlabs', 'development', '%23dockerfile', '%23vm', '%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F', '%23iaas', '%23%3F%3F%3F%3F_%3F%3F%3F%3F%3F', '%23provisioning', 'ci', '%23continuousintegration', '%23virtualmachine', '%3F%3F%3F%3F', '%23hypervisor', '%23%3F%3F%3F%3F%3F', '%23paas', 'chef', '%23containerization', '%23virtualization', 'sysadmin', '%23hidevops', '%23%3F%3F%3F%3F%3F_%3F%3F%3F%3F', '%23openstack', 'ansible', '%23container', 'docker', 'devops', '%3F%3F%3F%3F', '2015', 'div', 'virtual', '2014', 'a'];
234	window._wp_rp_promoted_content = true;
235</script>
235
236<link rel="stylesheet" href="http://hidevops.com/wp-content/plugins/wordpress-23-related-posts-plugin/static/themes/modern.css?version=3.6.4" />
237<style type="text/css">
238.related_post_title {
239}
240ul.related_post {
241}
242ul.related_post li {
243}
244ul.related_post li a {
245    /*margin-right: 15px;
246    text-decoration: none;*/
247}
248ul.related_post li img {
249}</style>
250<!-- Analytics by WP Statistics v14.11.3 - https://wp-statistics.com -->
251<link rel="pingback" href="http://hidevops.com/xmlrpc.php">
252<link rel="icon" href="http://hidevops.com/wp-content/uploads/2019/02/cropped-Logo-circle-600-600-32x32.png" sizes="32x32" />
253<link rel="icon" href="http://hidevops.com/wp-content/uploads/2019/02/cropped-Logo-circle-600-600-192x192.png" sizes="192x192" />
254<link rel="apple-touch-icon" href="http://hidevops.com/wp-content/uploads/2019/02/cropped-Logo-circle-600-600-180x180.png" />
255<meta name="msapplication-TileImage" content="http://hidevops.com/wp-content/uploads/2019/02/cropped-Logo-circle-600-600-270x270.png" />
256		<style id="wp-custom-css">
257			/*@media screen and (min-width: 49em)
258*/
259body, button, input, select, textarea {
260    font-size: 14px;
261}
262
263a[target] {
264background: url(//hiDevOps.com/res/icons/external-link.svg) no-repeat left .3em;
265    padding-left: 15px;
266    background-size: 10.5px;
267}
268body{
269	font-size:14px;
270	font-family:'Samim',Tahoma;
271}
272@font-face{font-family:Samim;src:url('/wp-content/fonts/Samim.eot?v=1.0.2');src:url('/wp-content/fonts/Samim.eot?v=1.0.2#iefix') format('embedded-opentype'),url('/wp-content/fonts/Samim.woff?v=1.0.2') format('woff'),url('/wp-content/fonts/Samim.ttf?v=1.0.2') format('truetype');font-weight:normal}@font-face{font-family:Samim;src:url('/wp-content/fonts/Samim-Bold.eot?v=1.0.2');src:url('/wp-content/fonts/Samim-Bold.eot?v=1.0.2#iefix') format('embedded-opentype'),url('/wp-content/fonts/Samim-Bold.woff?v=1.0.2') format('woff'),url('/wp-content/fonts/Samim-Bold.ttf?v=1.0.2') format('truetype');font-weight:bold}
273		</style>
274		</head>
275
276<body class="rtl post-template-default single single-post postid-1644 single-format-standard wp-embed-responsive has-sidebar colors-light">
277<div id="page" class="site">
278	<a class="skip-link screen-reader-text" href="#content">رفتن به محتوا</a>
279
280	<header id="masthead" class="site-header">
281
282		<div class="custom-header">
283
284		<div class="custom-header-media">
285					</div>
286
287	<div class="site-branding">
288	<div class="wrap">
289
290		
291		<div class="site-branding-text">
292							<p class="site-title"><a href="http://hidevops.com/" rel="home">سلام دواپس | Hi DevOps</a></p>
293			
294							<p class="site-description">مشاهدات، تجربیات و داستان های دواپس از زبان ما و شما</p>
295					</div><!-- .site-branding-text -->
296
297		
298	</div><!-- .wrap -->
299</div><!-- .site-branding -->
300
301</div><!-- .custom-header -->
302
303					<div class="navigation-top">
304				<div class="wrap">
305					<nav id="site-navigation" class="main-navigation" aria-label="فهرست بالایی">
306	<button class="menu-toggle" aria-controls="top-menu" aria-expanded="false">
307		<svg class="icon icon-bars" aria-hidden="true" role="img"> <use href="#icon-bars" xlink:href="#icon-bars"></use> </svg><svg class="icon icon-close" aria-hidden="true" role="img"> <use href="#icon-close" xlink:href="#icon-close"></use> </svg>گزینگان	</button>
308
309	<div class="menu-%d9%81%d9%87%d8%b1%d8%b3%d8%aa-%d8%a8%d8%a7%d9%84%d8%a7%db%8c%db%8c-container"><ul id="top-menu" class="menu"><li id="menu-item-61" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-61"><a href="http://hidevops.com/">خانه</a></li>
310<li id="menu-item-63" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-63"><a href="http://hidevops.com/blog/">بلاگ</a></li>
311<li id="menu-item-1916" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1916"><a href="http://hidevops.com/%d8%af%d9%88%d8%b1%d9%87-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-devops/">آموزش تخصصی</a></li>
312<li id="menu-item-2186" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2186"><a href="http://hidevops.com/%da%af%d8%b2%d8%a7%d8%b1%d8%b4-%d9%88%d8%b6%d8%b9%db%8c%d8%aa-%d8%af%d9%88%d8%a2%d9%be%d8%b3/">گزارش وضعیت دوآپس</a></li>
313<li id="menu-item-64" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-64"><a href="http://hidevops.com/contact/">ارتباط با ما</a></li>
314</ul></div>
315	</nav><!-- #site-navigation -->
316				</div><!-- .wrap -->
317			</div>
317<!-- .navigation-top -->
318		
319	</header><!-- #masthead -->
320
321	<div class="single-featured-image-header"><img width="918" height="651" src="http://hidevops.com/wp-content/uploads/2019/11/JamesTrunbleAndCharlesAnderson4.png" class="attachment-twentyseventeen-featured-image size-twentyseventeen-featured-image wp-post-image" alt="مصاحبه چارلز اندرسون با جیمز ترنبل درباره Docker" decoding="async" fetchpriority="high" srcset="http://hidevops.com/wp-content/uploads/2019/11/JamesTrunbleAndCharlesAnderson4.png 918w, http://hidevops.com/wp-content/uploads/2019/11/JamesTrunbleAndCharlesAnderson4-300x213.png 300w, http://hidevops.com/wp-content/uploads/2019/11/JamesTrunbleAndCharlesAnderson4-768x545.png 768w" sizes="100vw" /></div><!-- .single-featured-image-header -->
322	<div class="site-content-contain">
323		<div id="content" class="site-content">
324
325<div class="wrap">
326	<div id="primary" class="content-area">
327		<main id="main" class="site-main">
328
329			
330<article id="post-1644" class="post-1644 post type-post status-publish format-standard has-post-thumbnail hentry category-devops category-docker category-487 tag-container tag-containerization tag-continuousintegration tag-dockerfile tag-dockerhub tag-dockerimage tag-hardening tag-hidevops tag-hypervisor tag-iaas tag-immutableinfrastructure tag-logstash tag-microservice tag-openstack tag-paas tag-provisioning tag-puppetlabs tag-salt tag-soa tag-venmo tag-virtualization tag-virtualmachine tag-vm tag-512 tag-517 tag-514 tag-_ tag-513 tag-__ tag-519 tag-agile tag-ansible tag-chef tag-ci tag-development tag-devops tag-docker tag-puppet tag-sysadmin tag-102 tag-280 tag-521">
331		<header class="entry-header">
332		<div class="entry-meta"><span class="posted-on"><span class="screen-reader-text">نوشته‌شده در</span> <a href="http://hidevops.com/1644/%d9%85%d8%b5%d8%a7%d8%ad%d8%a8%d9%87-%d8%a8%d8%a7-%d8%ac%db%8c%d9%85%d8%b2-%d8%aa%d8%b1%d9%86%d8%a8%d9%84-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-%d8%af%d8%a7%da%a9%d8%b1-docker/" rel="bookmark"><time class="entry-date published" datetime="2019-11-13T16:30:00+03:30">نوامبر 13, 2019</time><time class="updated" datetime="2020-03-31T14:14:12+04:30">مارس 31, 2020</time></a></span><span class="byline"> از <span class="author vcard"><a class="url fn n" href="http://hidevops.com/author/omids20m/">امید شریعتی</a></span></span></div><!-- .entry-meta --><h1 class="entry-title">مصاحبه چارلز اندرسون با جیمز ترنبل درباره داکر &#8211; Docker</h1>	</header><!-- .entry-header -->
333
334	
335	<div class="entry-content">
336		<div class="paragraph">در این مصاحبه که در تابستان 2014 ضبط شده و در ابتدای سال 2015 منتشر شده است <a href="http://www.se-radio.net/team/#CAnderson" target="_blank" rel="noopener noreferrer">چارلز اندرسون</a> با <a href="http://www.jamesturnbull.net/" target="_blank" rel="noopener noreferrer">جیمز ترنبل</a> ، در مورد <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> صحبت می‌کند. <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> یا داکر ابزاری است که با وجود عمر کوتاه خود، خصوصاً در محیط‌های استقرار مستمر و در معماری‌های مبتنی بر ریزسرویس‌ها، توجه زیادی به خود جلب کرده است. <a href="http://www.jamesturnbull.net/" target="_blank" rel="noopener noreferrer">جیمز ترنبل</a> یک نویسنده مستقل نرم‌افزار‌های متن‌باز، متخصص امنیت و توسعه‌دهنده نرم‌افزار است. او نایب‌رییس شرکت <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> است. او نقش‌های مشابهی در <a href="https://puppetlabs.com/" target="_blank" rel="noopener noreferrer">PuppetLabs</a> و <a href="https://venmo.com/" target="_blank" rel="noopener noreferrer">Venmo</a> داشته است. همچنین کتاب‌هایی در مورد <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> ، <a href="https://puppetlabs.com/" target="_blank" rel="noopener noreferrer">Puppet</a> ، <a href="https://www.elastic.co/products/logstash" target="_blank" rel="noopener noreferrer">Logstash</a> ، مدیریت سیستم‌های لینوکس و امنیت نÙ
336ˆØ´ØªÙ‡ است.</div>
337<div>منبع: <a href="https://www.se-radio.net/2016/08/se-radio-episode-266-charles-nutter-on-the-jvm-as-a-language-platform/" target="_blank" rel="noopener noreferrer">www.se-radio.net</a></div>
338<div>ترجمه: <a href="http://www.se-topics.ir/topicview?id=39" target="_blank" rel="noopener noreferrer">www.se-topics.ir</a></div>
339<h3 class="question-text">جیمز، به <a href="http://www.se-radio.net/" target="_blank" rel="noopener noreferrer">SE Radio</a> خوش آمدید.</h3>
340<div class="paragraph">ممنون، خوشحالم که اینجا هستم.</div>
341<h3 class="question-text">خیلی سطح بالا و بصورت خلاصه، داکر یا Docker چیست؟</h3>
342<div class="paragraph">داکر یک تکنولوژی مجازی‌سازی محفظه (Container Virtualization) است. مانند یک ماشین مجازی خیلی سبک است.</div>
343<div class="paragraph">علاوه بر ساختن محفظه‌ها ما چیزی که آن را جریان کاری توسعه‌دهنده (Developer Workflow) می‌نامیم را نیز فراهم می‌کنیم که در واقع درباره کمک کردن به افراد برای ساختن محفظه‌ها و تولید برنامه‌ها داخل محفظه‌ها و بعد، به اشتراک گذاشتن آنها در بین هم‌تیمی‌هایشان است.</div>
344<h3 class="question-text">بسیار خوب، چه مسأله‌ای را حل می‌کند؟</h3>
345<div class="paragraph">چند مسأله را بطور خاص می‌توانیم مطرح کنیم.</div>
346<div class="paragraph">اول اینکه ماشین مجازی، به نسبت، منبع محاسباتی سنگینی است. هر ماشین مجازی یک کپی از سیستم‌عامل است که بر روی <a href="https://en.wikipedia.org/wiki/Hypervisor" target="_blank" rel="noopener noreferrer">Hypervisor</a> اجرا می‌شود که آن نیز خود بر روی سخت‌افزار فیزیکی اجرا می‌شود و برنامه کاربردی بر روی همه آنها اجرا می‌شود. این باعث چالش‌هایی در مورد سرعت و کارایی و مشکلاتی در محیط‌های چابک شده است. ما قصد داشتیم این مشکل را برطرف کرده و یک چیز سبک‌تر و یک منبع محاسباتی چابک‌تر، تولید کنیم. اغلب، محفظه‌های <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> در کسری از ثانیه بالا می‌آیند و Hypervisor‌ای وجود ندارد که سیستم بر روی آن اجرا شده باشد. شما می‌توانید تعداد زیادی از آنها را بر روی یک ماشین فیزیکی یا ماشین مجازی قرار دهید. بنابراین، مقیاس‌پذیری خوبی خواهید داشت.</div>
347<div class="paragraph">مشکل دومی که می‌خواهیم به آن نگاهی بیاندازیم این است که ما متوجه این مسئله شده‌ایم که برای اغلب افراد، مهمترین دارایی IT، همان کدهایی است که توسعه می‌دهند و این کد بر روی ایستگاه‌های کاری (Workstation) توسعه‌دهنده‌ها یا لپتاپ‌هایشان یا محیط <a href="https://fa.wikipedia.org/wiki/%D8%AF%D9%88%D8%A7%D9%BE%D8%B3" target="_blank" rel="noopener noreferrer">DevOps</a> قرار گرفته است اما این کدها تا زمانی که به دست مشتری نرسد برای شرکت، هیچ ارزشی تولید نکرده است. و رویه‌ای که به دست مشتری برسد یک جریان کاری شامل توسعه، تست، قرارگرفتن در سکو و استقرار در محیط عملیاتی است که یکی از پراصطکاک‌ترین کارها در IT است. به عنوان مثال کل جریان <a href="https://fa.wikipedia.org/wiki/%D8%AF%D9%88%D8%A7%D9%BE%D8%B3" target="_blank" rel="noopener noreferrer">DevOps</a> از این حقیقت و مشکل کلاسیک در بسیاری از سازمان‌های معظم IT نشأت گرفت که توسعه‌دهنده‌ها برنامه‌ها را توسعه می‌دادند و به تیم عملیات می‌دادند اما آنها متوجه می‌شدند که آن برنامه‌ها در محیط عملیاتی اجرا نمی‌شوند. همان مشکل کلاسیک که <strong>بر روی ماشین من اجرا می‌شود اما تیم عملیات با آن مشکل دارد!</strong></div>
348<div class="paragraph">بنابراین ما قصد داریم که یک تکنولوژی سبک محاسباتی بسازیم که کمک کند افراد کدها و برنامه‌هایشان را داخل منابع محاسباتی‌شان (Computing Resource) قرار داده و مجموع آنها قابل انتقال به گروه تست و عملیات باشند و همه‌اش در محیط عملیاتی قابل نمونه‌سازی باشد با این فرض که آنچه می‌سازید و اجرایش می‌کنید و تستش می‌کنید همان چیزی است که در محیط عملیاتی اجرا خواهید کرد.</div>
349<h3 class="question-text">بسیار خوب، ما بعداً برخی جزییات را مطرح می‌کنیم اما اکنون بگویید که چه موارد کاربرد خوب یا مرسومی برای یک توسعه‌دهنده یا مدیرسیستم برای استفاده از <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> وجود دارد؟</h3>
350<div class="paragraph">چندین مورد کاربرد واقعاً جدی دارد. مورد اول، کاربرد در دنیای <a href="http://hidevops.com/141/continuous-integration-%da%86%db%8c%d8%b3%d8%aa/" target="_blank" rel="noopener noreferrer">یکپارچه‌سازی مستمر</a> (<a href="http://hidevops.com/141/continuous-integration-%da%86%db%8c%d8%b3%d8%aa/" target="_blank" rel="noopener noreferrer">Continuous Integration</a>) و <a href="http://hidevops.com/143/continuous-delivery-%da%86%db%8c%d8%b3%d8%aa/" target="_blank" rel="noopener noreferrer">استقرار مستمر</a> (<a href="http://hidevops.com/143/continuous-delivery-%da%86%db%8c%d8%b3%d8%aa/" target="_blank" rel="noopener noreferrer">Continuous Deployment</a>) است. <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> خیلی سبک است که به این معناست که توسعه‌دهنده‌های زیادی داریم که پشته‌هایی از محفظه‌های <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را بر روی لپ‌تاپ‌هایشان ایجاد می‌کنند و کپی‌هایی از محیط عملیاتی می‌سازند مثلاً <a href="https://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank" rel="noopener noreferrer">LAMP Stack</a> و محیط‌های چندلایه‌ای [را می‌سازند]. آنها می‌توانند برنامه‌شان را بر روی این پشته (Stack) تولید و اجرا کنند که به این معناست که خیالشان کاملاً راحت است که آنچه اجرا می‌کنند مانند محیط عملیاتی است و بعد تست‌‌ها را اجرا می‌کنند و تست پذیرش مشابه با محیط عملیاتی خواهد بود. از آنجاییکه بعداً می‌توانید این محفظه‌ها را جابجا کنید و قابل انتقال هستند، بعداً می‌توانید در محیط‌های استقرار مستمر، خیلی سریع‌تر کار کنید. مثلاً فرض کنیم که یک محیط استقرار مستمرِ <a href="https://jenkins-ci.org/" target="_blank" rel="noopener noreferrer">Jenkins</a> دارید، در این حالت به ماشین‌های مجازی متکی بوده و مجبوریم که ماشین‌های مجازی را بسازیم و Ù
350‡Ù…Ù‡ نرم‌افزارها را نصب کرده و برنامه و کدها را نصب کرده و بعد تست‌ها را اجرا کنیم و بعد دوباره همه‌ی آن‌ها را پاک‌سازی کنید چرا که ممکن است فرآیند تست، وضعیت VM را خراب کرده باشد و مجبور شویم این چرخه را تکرار کنیم. شاید در این فرآیند <a href="http://hidevops.com/141/continuous-integration-%da%86%db%8c%d8%b3%d8%aa/" target="_blank" rel="noopener noreferrer">CI</a> (مخفف <a href="http://hidevops.com/141/continuous-integration-%da%86%db%8c%d8%b3%d8%aa/" target="_blank" rel="noopener noreferrer">Continuous Integration</a>)، ساختن این ماشین‌های مجازی 10 دقیقه طول بکشد اما درعوض، در دنیای <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> این ماشین‌های مجازی یا اصطلاحاً محفظه‌ها را در چندثانیه می‌سازید که به این معناست که فرآیند تولید و تست شما، 10 دقیقه کوتاه می‌شود که یک صرفه‌جویی شگفت‌انگیز در هزینه است. شما به سرعت، تعدادی محفظه می‌سازید و بعد تست‌هایتان را اجرا می‌کنید و براساس نتایج تست ممکن است به انجام تغییراتی و تکرار فرآیند تست نیاز داشته باشید.</div>
351<div class="paragraph">مورد دیگر، چیزی است که ما به نوعی آن را ظرفیت بالا می‌نامیم؛ ماشین‌های مجازی سنتی، <a href="https://en.wikipedia.org/wiki/Hypervisor" target="_blank" rel="noopener noreferrer">Hypervisor</a> دارند. Hypervisor، ده تا پانزده درصد ظرفیت (ماشینِ) میزبان را می‌گیرد. خیلی از مشتری‌ها هستند که برایشان ده تا پانزده درصد خیلی پرهزینه است و تصمیم می‌گیرند آن را کنار گذاشته و با یک میزبان <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> جایگزینش کنند تا بتوانند محفظه‌های خیلی بیشتری اجرا کنند و مقیاس بالایی از محفظه‌ها را بر روی یک میزبان راه بیاندارند. بعلت فقدان <a href="https://en.wikipedia.org/wiki/Hypervisor" target="_blank" rel="noopener noreferrer">Hypervisor</a> و اینکه محفظه‌ها مستقیماً بر روی سیستم‌عامل قرار می‌گیرند، خیلی خیلی سریع هستند. <strong>سال گذشته تحقیقاتی انجام شد که نشان داد در سیستم‌های مبتنی بر تراکنش، بطور متوسط محفظه‌ها، 25% سریع‌تر از یک ماشین مجازی عمل می‌کنند که کاملاً شگفت‌انگیز است.</strong></div>
352<div></div>
353<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</div>
354<h3 class="question-text">بله، شگفت‌انگیز است. <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> توسعه را سریع‌تر (به قول شما چابک‌تر) می‌کند و وقتی به مرحله عملیات برسد، تأثیرش بیشتر هم خواهد شد.</h3>
355<div class="paragraph">بله.</div>
356<h3 class="question-text">بسیار خوب. بیایید کمی در این مورد عمیق‌تر شویم که <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> کارهایش را چگونه انجام می‌دهد.</h3>
357<div class="paragraph">Docker مبتنی بر محفظه‌ است. محفظه‌ها، محیط‌های ایزوله برای کدهای مُد کاربر (User Mode) فراهم می‌کنند. برخی از شنوندگان ما احتمالاً با سیستم‌های محفظه‌ای قدیمی‌تر از قبیل <a href="https://en.wikipedia.org/wiki/Solaris_Containers" target="_blank" rel="noopener noreferrer">Solaris Zones</a> و یا <a href="https://en.wikipedia.org/wiki/FreeBSD_jail" target="_blank" rel="noopener noreferrer">FreeBSD Jails</a> یا حتی اگر عقب‌تر برویم از نسخه 7 یونیکس به بعد با فراخوانی سیستمی <a href="https://en.wikipedia.org/wiki/Chroot" target="_blank" rel="noopener noreferrer">chroot</a> ، آشنا هستند. کدی که در یک محفظه اجرا می‌شود، فایل‌سیستم ایزوله خود را دارد و تنها می‌تواند پروسس‌های در همان محفظه را ببیند.</div>
358<h3 class="question-text">بدون رونوشت گرفتن ازفایل‌سیستم برای محفظه‌های یکسان، چگونه هر محفظه‌ کپی خود از فایل سیستم را خواهد داشت؟ خصوصاً اینکه شما در مورد مقیاس‌پذیری فوق‌العاده صحبت می‌کنید.</h3>
359<div class="paragraph">یکی از تکنولوژی‌های دیگر که <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> به آن متکی است، مفهومی است که ما به آن کپی کردن به هنگام نوشتن (Copy on Write) می‌گوییم. فایل‌سیستم‌های متعددی هستند که این قابلیت را فراهم می‌کنند. <a href="https://en.wikipedia.org/wiki/Btrfs" target="_blank" rel="noopener noreferrer">Btrfs</a> ، <a href="http://aufs.sourceforge.net/aufs.html" target="_blank" rel="noopener noreferrer">AUFS</a> و نگاشت‌گرهای Device، عملکردی دارند که <a href="https://en.wikipedia.org/wiki/Thin_provisioning" target="_blank" rel="noopener noreferrer">تدارکات سبک</a> (Thin Provisioning) نامیده می‌شود، ویژگی مشترک همه آنها نوعی از مدل کپی کردن به هنگام نوشتن است. همان چیزی که توسعه‌دهنده‌های کرنل به آن فایل‌سیستم مجتمع (Union File System) می‌گویند. آنچه رخ می‌دهد این است که لایه‌هایی از فایل‌سیستم را می‌سازید. هر محفظه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بر روی چیزی که ما آن را تصویر (Image) می‌نامیم ساخته می‌شود. تصویرهای <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> همانند فایل‌سیستم‌های از پیش‌ساخته هستند. آنها شامل لایه نازکی از کتابخانه‌ها و فایل‌های اجرایی هستند که برای به کار انداختن برنامه مورد نیاز است. احتمالاً هر برنامه‌ای، نیاز به تعدادی پکیج‌های پشتیبان دارد مثلاً ممکن است <a href="https://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank" rel="noopener noreferrer">LAMP Stack</a> را نیاز داشته باشد یا سرور Apache یا &#8230; . این تصویر، بر روی اصطلاحاً لایه خودش (لایه فایل‌سیستم) ذخیره می‌شود. اگر بخواهیم تغییری بر روی این تصویر ایجاد کنیم مثلاً پکیج دیگری را نصب کنیم فرضاً سیستم را بوت کرده و بخواهیم PHP را نصب کنیم و فرمان apt-get install php را بزنیم، آنچه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> انجام می‌دهد این است که یک لایه بر روی لایه موجود می‌سازد و فقط چیزهایی که تغییر کرده‌اند را در آن اضافه می‌کند یعنی در اینجا فقط همین پکیج را اضافه می‌کند.</div>
360<div class="paragraph">این تولید لایه به لایه به این معنی است که به یک فایل‌سیستم فقط خواندنی (Read Only) می‌رسیم که شامل لایه‌های مختلفی است. می‌توانید آنها را مانند کامیت‌های Git (یا هر ابزار کنترل کد دیگر) در نظر بگیرید. در نتیجه، به یک سیستم خیلی سبک می‌رسیم که تنها، چیزهایی که می‌خواهیم بر روی آن قرار دارد و وقتی به عنوان مثال می‌خواهیم آنها را دوباره بسازیم، <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> می‌فهمد که من از قبل PHP را نصب کرده‌ام و قرار نیست تغییری بر روی این محیط ایجاد کنم و قرار نیست چیزی بنویسم و فقط می‌خواهم چیزهای موجود در لایه PHP را استفاده کنم. بعنوان مثال اگر تغییری در سورس‌کدهای خود بدهید، برخلاف کاری که برای ماشین مجازی می‌کردید که یک ماشین مجازی می‌ساختید، در اینجا <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> تغییراتی که قرار است در سورس‌کدها انجام شود را به تصویر (Image) می‌افزاید که شاید مثلاً تنها 10 کیلوبایت باشد، بنابراین <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> فقط همان چیزهایی که قرار است تغییر کند را درفایل‌سیستم می‌نویسد. در نتیجه خیلی سبک است و واقعاً خیلی سریع ساخته می‌شود و با کش کردن، دوباره‌سازی آن نیز فوق‌العاده سریع خواهد بود.</div>
361<h3 class="question-text">بسیار خوب، لایه‌ها کمی مانند تصاویر مقطعی (Snapshot) در ماشین‌های مجازی هستند.</h3>
362<div class="paragraph">بله، خیلی مشابه آنها هستند با این تفاوت که بخاطر ماهیت فقط خواندنی خود، احتمالاً منعطف‌تر از آنها هستند، اگر شما یک تصویر مقطعی را دوباره بکار بگیرید تضمینی وجود ندارد که در همان وضعیت اجرایی (Running State) قرار بگیرد؛ کتابخانه‌ها و فایل‌های اجرایی در آنها فقط وضعیت‌های داخل حافظه نیستند بلکه [بر روی] فایل‌سیستم هستند. اما یکی از فایل‌سیستم‌هایی که ما استفاده می‌کنیم، <a href="https://en.wikipedia.org/wiki/Device_mapper" target="_blank" rel="noopener noreferrer">نگاشت‌گر Device</a> است، ما از قابلیت <a href="https://en.wikipedia.org/wiki/Thin_provisioning" target="_blank" rel="noopener noreferrer">تدارکات سبک</a> (Thin Provisioning) استفاده می‌کنیم که بصورت منطقی یک ابزار برای گرفتن تصاویر مقطعی را طراحی می‌کند.</div>
363<h3 class="question-text">بسیار خوب، من همینطور اشاره کردم که پروسس‌های داخل یک محفظه فقط می‌توانند پروسس‌های داخل همان محفظه را ببینند. توضیح دهید این چطور کار می‌کند؟</h3>
364<div class="paragraph">Docker به شدت متکی به دو مورد از تکنولوژی‌های کرنل لینوکس است. اولی، فضای نام (Namespace) خوانده می‌شود. فرض کنید شما پروسس جدیدی در کرنل لینوکس اجرا می‌کنید. در اینصورت شما یک فراخوانی سیستمی به فضای نام پروسس‌ها می‌کنید که می‌خواهید یک پروسس جدید بسازید، همینطور اگر بخواهید یک واسط شبکه جدید بسازید یک فراخوانی به فضای نام شبکه می‌کنید و کرنل فضای نام خودتان را تخصیص می‌دهد که پروسس و همه منابع دیگری که خواسته‌اید مثلاً دسترسی به شبکه، دسترسی به بخش‌هایی ازفایل‌سیستم و دسترسی به حافظه یا CPU را در خود دارد.</div>
365<div class="paragraph">وقتی ما یک محفظه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> می‌سازیم، تعدادی فراخوانی به کرنل لینوکس داریم که بدینوسیله از آن می‌خواهیم که یک جعبه (Box
365) برایمان بسازد و می‌خواهیم که آن جعبه دسترسی به فایل سیستم مشخصی، دسترسی به حافظه و CPU، دسترسی به شبکه را داشته باشد و بایست داخل فضای نام همین پروسس باشد. شما کاملاً درست گفتید، در داخل این فضای نام نمی‌توانید هیچ فضای نام پروسسی که خارج از آن قرار گرفته را مشاهده کنید.</div>
366<div class="paragraph">تکنولوژی دیگری که بکار گرفته‌ایم گروه‌های کنترلی یا CGroup ها هستند. گروه‌های کنترلی به عنوان مثال به شما این امکان را می‌دهد که بگویید فلان محفظه ، فقط 120 مگابایت از RAM را داشته باشد یا فلان محفظه دسترسی به شبکه نداشته باشد. شما می‌توانید بر اساس نیاز این قابلیت‌‌ها را اضافه و حذف کنید. این خیلی قدررتمند است از این جهت که می‌توانید کنترل دقیقی بر روی محفظه‌ها به همان طریقی که در واسط VMware دارید، داشته باشید که بگویید فلان کارت شبکه را بگیر، فلان هسته CPU را بگیر، فلان حافظه و دسترسی به فلان فایل‌سیستم مربوط به CD_ROM مجازی را داشته باش و &#8230; . سطح یکسانی از تکنولوژی را دارد.</div>
367<h3 class="question-text">محفظه‌ها به غیر از فایل‌ها و پروسسها، محیط ایزوله‌ای برای آدرس‌های شبکه و پورت‌ها نیز فراهم می‌کنند. به عنوان مثال می‌توانیم وب‌سرورهایی بر روی چندین محفظه در حال اجرا داشته باشیم که همگی از پورت 80 استفاده کنند. به صورت پیش‌فرض، پورت‌های شبکه یک محفظه، در معرض خارج از آن (محفظه) قرار نمی‌گیرند اما به صورت دستی یا عامدانه می‌توان آنها را عرضه کرد. این کار کمی مشابه با باز کردن پورت‌های یک جدول IP بر روی یک فایروال است. درست است؟</h3>
368<div class="paragraph">بله، آنچه رخ می‌دهد به این صورت است که هر شبکه، واسط شبکه خود را دارد که یک واسط مجازی شبکه است. شما می‌توانید داخل هر محفظه پروسس‌هایی را اجرا کنید که به پورت‌های داخل آن محفظه دسترسی داشته باشند. به عنوان مثال می‌توانم 10 محفظه Apache داشته باشم که داخل هرکدام یک سرویس بر روی پورت 80 اجرا شده باشد، همینطور می‌توانم این پورت‌ها را به خارج از محفظه عرضه کنم. اگر بخواهم می‌توانم پورت 80 (داخل محفظه) را روی پورت 80 (خارج از محفظه) عرضه کنم که می‌توانم یک بار (برای یکی از آنها) این کار را بکنم اما به صورت پیش‌فرض، کاری که <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> انجام می‌دهد این است که یک پورت تصادفی با شماره بالا را انتخاب می‌کند مثلاً پورت 80 داخل محفظه را روی پورت 49154 سیستم میزبان عرضه می‌کند. بنابراین پروسس‌های Apache ام بر روی پورت‌های مختلف اجرا خواهند شد و بعد می‌توانم یک ابزار کشف سرویس (Service Discovery Tool) یا یک تعدیل‌کننده بار (Load Balancer) یا نوعی پروکسی را جلوی آن قرار دهم. <a href="http://www.haproxy.org/" target="_blank" rel="noopener noreferrer">HAProxy</a> خیلی متداول است، برخی‌ها هم از <a href="http://wiki.nginx.org/Main" target="_blank" rel="noopener noreferrer">nginx</a> استفاده می‌کنند. برخی ابزارهای کشف سرویس از قبیل <a href="https://zookeeper.apache.org/" target="_blank" rel="noopener noreferrer">
368ZooKeeper</a> و <a href="https://github.com/coreos/etcd" target="_blank" rel="noopener noreferrer">Etcd</a> و <a href="https://www.consul.io/" target="_blank" rel="noopener noreferrer">Consul</a> نیز استفاده می‌شود.</div>
369<div class="paragraph">این قابلیت را می‌دهد که بتوانید بگویید من می‌خواهم فلان برنامه (جهت یافتن سرویس مورد نظر خود) از آن برنامه خاص کشف سرویس پرس و جو کند و اینکه مثلاً پروسس Apache به آن 10 محفظه تعلق داشته باشد و بتوانید یکی از آن 10 پورت را برای اتصال به پروسس Apache انتخاب کنید. بنابراین یک مدل کاملاً منعطف و مقیاس‌پذیری وجود دارد که برای اجرای برنامه‌های پیچیده طراحی شده است.</div>
370<div class="question-text">بسیار خوب، <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> همینطور امکان برقرار کردن اتصال بین محفظه‌ها را هم فرآورده می‌کند. برای مثال می‌توانم یک سرور Apache داشته باشم و یک سرور برنامه‌های جاوا (Java Application Server) داشته باشم و بین آنها اتصال برقرار کنم. درست است؟</div>
371<div class="paragraph">درست است. چون که <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بصورت پیش‌فرض، بسته است زیرا ما فکر می‌کنیم امن‌ترین راهش این است که شما کسی باشید که تصمیم بگیرید کدام پورت‌ها به معرض گذاشته شوند. بعنوان مثال انواع مختلفی از محفظه‌ها مثلاً محفظه‌های پایگاه داده و محفظه‌های سرور‌های برنامه (Application Server) هستند که هیچگاه نباید در معرض مشتری قرار بگیرند و تنها باید در معرض محفظه‌هایی قرار بگیرند که منابعشان را مصرف می‌کنند.</div>
372<div class="paragraph">به عنوان مثال می‌توانم یک محفظه پایگاه داده را اجرا کرده و به آن یک اسم بدهم مثلاً می‌توانم آن را پایگاه داده MySQL شماره 1 بنامم و بعد می‌توانم یک محفظه وب هم راه بیاندازم، در این حالت کاری که باید بکنید این است که (از محفظه وب) به آن (محفظه پایگاه داده MySQL شماره 1) لینک بزنید که به این معنی است که بر روی یک پورت خاص، یک تونل رمزگذاری شده بین محفظه وب و محفظه پایگاه داده مقصد ایجاد کنید و اطلاعاتی در داخل محفظه خود فراهم کنید به این ترتیب که تعدادی مدخل‌های میزبان DNS و تعدادی متغیرهای محیطی (Environment Variable) در محفظه مورد نظر ایجاد می‌شود تا برنامه از آنها استفاده کرده و بفهمد که پایگاه داده کجا قرار گرفته است. بنابراین آدرس IP که ممکن است آن را ندانید را هاردکد نخواهید کرد و بعد از آن، آنچه رخ می‌دهد این است که اکنون محفظه پایگاه داده و محفظه وب با هم اتصال دارند. فقط آنها می‌توانند با هم صحبت کنند، شما نمی‌توانید پایگاه داده را پینگ کنید یا جستجویش کنید مگر آنکه همان محفظه‌ای باشید که روی پورت خاص با آن صحبت می‌کنید.</div>
373<div class="paragraph">بنابراین یک راه خیلی ساده برای تولید پشته برنامه‌ها و برنامه‌های سبکِ مانند این وجود دارد. این کارهای خیلی ابتدایی است که ما آن را Links نسخه اول می‌نامیم و در نسخه‌های بعدی Links، مفاهیم خیلی دینامیک‌تری خواهیم داشت فرضاً اینکه هنگام رخداد خرابی بصورت خودکار، بروزرسانی داشته باشیم مثلاً وقتی که یک پایگاه داده که بر روی Û
373ŒÚ© مرکز داده قرار دارد خراب شود، محفظه وب بصورت خودکار، لینک دوم را بشناسد که ممکن است یک محفظه پایگاه داده دیگر در یک مرکز داده دیگر باشد. اموری از این قبیل در نقشه راه قرار گرفته است که باعث می‌شود این تکنولوژی واقعاً جذاب شود.</div>
374<h3 class="question-text">بله، این قطعاً راحت‌تر و کمی سطح بالاتر از سوار شدن بر روی یک IP و پورت خاص است.</h3>
375<div class="paragraph">Docker به دنیا به شکل معماری خیلی سرویس‌گرایی می‌نگرد. ما به شدت درگیر دیدگاه SOA یا سرویس‌گرا از دنیا هستیم که بر طبق آن، نباید درباره چیزهایی مانند آدرس IP و پورت نگران باشید، بلکه باید بتوانید سرویس‌ها را خطاب قرار دهید، باید بتوانید بگویید که «من می‌دانم که سرویسی با نام MySQL وجود دارد و این برنامه می‌خواهد از آن استفاده کند. من می‌خواهم که زیرساخت‌ها، به جزییات این کار رسیدگی کنند. من نباید مجبور باشم که به سراغ کسی بروم تا یک قاعده بر روی فایروال برایم ایجاد کند یا یک پورت را برایم باز کند و &#8230; . سرویس من باید بتواند با سرویس‌های دیگر صحبت کند و کنترل مطلوب و سطح دسترسی مطلوب را داشته باشد»</div>
376<h3>بله، کاملاً منطقی است.<br />
377بصورت پیش‌فرض، حافظه ذخیره‌سازی محفظه‌ها، موقتی هستند و وقتی محفظه از بین می‌رود حافظه ذخیره‌سازی هم از بین می‌رود. فضاها (Docker Volume) مکانیزمی برای داشتن حافظه ذخیره‌سازی پایا و به اشتراک گذاری بین محفظه‌ها ایجاد می‌کنند. ممکن است در این مورد توضیح دهید.</h3>
378<div class="paragraph">قبلاً در مورد تصویر محفظه (Container Image) و لایه‌ها (Layers) صحبت کردیم. وقتی یک محفظه را اجرا می‌کنید، یک لایه دیگر بر روی آن می‌سازید که یک لایه با حق دسترسی فقط خواندن است و تا زمانی که کاری برای ذخیره‌سازی این اطلاعات نکنید، ناپایا (Ephemeral) هستند و وقتی از محفظه خارج می‌شوید، از بین می‌روند.</div>
379<div class="paragraph">در اینجا ما مفهوم Volume را داریم. آنها خودشان بخشی از فایل‌سیستم هستند. آنها تا حدودی مانند آدرس‌های سوارشده (Mounted) هستند. شما می‌توانید یک محفظه بسازید و بخشی از آن محفظه را بصورت Volume در دسترس قرار دهید. یک مثال کلاسیکش می‌تواند این باشد که یک محفظه Apache اجرا کنید و یک Volume بر روی فلان دایرکتوری‌اش، سوار کنید و داخل آن، سورس کد برنامه‌تان را داشته باشید.</div>
380<div class="paragraph">دو نوع Volume می توان ایجاد کرد: یکی اینکه از روی فایل‌سیستم دستگاه میزبان نگاشت را انجام دهید. به عنوان مثال می‌توانید بگویید که در سیستم میزبان به فلان دایرکتوری رفته و آن را بر روی محفظه من نگاشت کن. با این روش می‌توان سورس‌کد را بر روی یک مخزن (Repository) نگاه داشت و محفظه را بر روی آن اجرا نمود. این بدان معناست که وقتی تغییری بر روی کد انجام دهم می‌توانم به محفظه رفته و تغییرات را در آنجا ببینم.</div>
381<div class="paragraph">نوع دوم Volume به این روش است که می‌توانید بین محفظه‌ها اشتراک بگذارید. مثالش می‌تواند این باشد که یک محفظه پایگاه داده داشته باشید و دایرکتوری MySQL را بعنوان یک Volume در دسترس قرار دهید و آن زمان، محفظه دیگری را اجرا کنید و آن Volume را برروی آن سوار کنید. به عنوان مثال ممکن است بخواهید نسخه‌برداری (Replication) یا پشتیبان‌گیری (Backup) یا ذخیره لاگ یا کارهای مشابه آن داشته باشید. برای این منظور محفظه MySQL را اجرا کرده و سپس به عنوان مثال یک محفظه پشتیبان‌گیری را اجرا می‌کنم که Volume حاوی دایرکتوری MySQL بر رویش سوار شده است و بنابراین Ù
381‚ادر خواهم بود که از داده‌های آن پایگاه داده نسخه پشتیبان گرفته، و جایی داخل محفظه ذخیره کنم.</div>
382<div class="paragraph">به این ترتیب قادر خواهید بود که برنامه‌های چندرده‌ای (Multi-tier) و چندسکویی (Multi-stage) داشته باشید. ما خیلی روی این موضوع تمرکز داریم که هر محفظه واقعاً یک کار انجام دهد مثلاً یک محفظه، یک پروسس وب را اجرا کند یا سرور برنامه‌های وب را اجرا کند یا پشتیبان‌گیری کند یا لاگ بزند و &#8230; که همان مدل معماری سرویس‌گرای ریزسرویس‌ها است.</div>
383<h3 class="question-text">ما در مورد اینکه محفظه‌ها از تصویر‌ها ساخته و اجرا می‌شوند صحبت کردیم. شما یک کمی به این مقدمات اشاره داشتید که تصویرها لایه به لایه ساخته می‌شوند. ممکن است کمی در این مورد صحبت کنید که چطور تصویرها را می‌سازیم؟</h3>
384<div class="paragraph">قطعاً. تصاویر <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بصورت کلی از چیزهایی که Dockerfile خوانده می‌شوند ساخته می‌شوند. یک Dockerfile ، لیستی از دستورها است که برای تولید تصویر، اجرا می‌شود. هر تصویر <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> از یک تصویر که ما آن را تصویر مبنا (Base Image) می‌نامیم آغاز می‌شود. تصویر مبنا همان چیزی است که من در موردش صحبت کردم و یک پوسته خیلی نازک از فایل‌های کتابخانه‌ای و اجرایی است که چیزی مشابه با یک سیستم‌عامل را می‌سازد. یک تصویر مبنا می‌تواند چیزی مانند Ubuntu باشد. ممکن است بر مبنای نسخه خاص 14.04 از Ubuntu باشد و شامل مینیمم امکانات سیستم‌عامل Ubuntu باشد که برای اجرا و تعامل با کرنل و انجام کارهای ابتدایی لازم است. بعنوان مثال شامل libc و ابزار apt-get برای مدیریت پکیج و ابزارهای مدیریت سیستم از قبیل <a href="https://en.wikipedia.org/wiki/Systemd" target="_blank" rel="noopener noreferrer">systemd</a> و چیزهای مشابه آن است. اما شامل چیزهایی از قبیل vim (ابزار ویرایش متن) و X (کتابخانه‌های گرافیکی) و &#8230; نیست. تنها شامل حداقل‌های مورد نیاز برای اجرای سیستم‌عامل است. می‌توان آن را یک ساختار حداقلی و لاغر در نظر بگیرید. در مقایسه با ماشین‌های مجازی که چند گیگابایت حجم دارند، اینها غالباً خیلی سبک هستند مثلاً ما یک تصویر مبنای <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> داریم که مبتنی بر یک توزیع <a href="http://www.busybox.net/" target="_blank" rel="noopener noreferrer">BusyBox</a> از لینوکس است که فوق‌العاده کوچک است و حدود 24 مگابایت حجم دارد. تصور کنید که فرضاً بتوانید <a href="https://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank" rel="noopener noreferrer">LAMP Stack</a> را بر روی سیستم‌عاملی که 24 مگابایت حجم دارد اجرا کنید! از لحاظ سرعت و حجم، خیلی شگفت‌انگیز است.</div>
385<div class="paragraph">بر روی تصویر مبنا فرضاً بر روی تصویر مبنایی که Ubunto 14.04 باشد، می‌توانم چندین گام ساخت (Build Step) داشته باشم. به عنوان مثال این گام‌ها می‌تواند شامل این باشد که: « Apache را نصب کن» یا می‌تواند این باشد که: «برخی کدهای برنامه یا فایل‌های پیکربندی را داخل تصویر، اضافه کن» و بعد می‌تواند اعمال تنظیماتی از این قبیل باشد که: «دایرکتوری جاری (Working Directory) داخل تصویر را مقداردهی کن یا کاربری که باید برنامه‌ها با آن Run as شوند را تنظیم کن» و بعد احتمالاً مقداری تنظیمات شبکه خواهید داشت مثلاً اینکه: «این تصویر باید پورت شماره 80 را به معرض بگذارد». در نهایت، هنگامیکه می‌خواهیم محفظه را از روی تصویر اجرا کنیم خواهیم گفت که برنامه پیش‌فرضی که باید در محفظه اجرا شود کدام است، در مثال Apache احتمالاً خواهم گفت که اجرای Apache Daemon کار پیش‌فرضی است که باید انجام بدهی!</div>
386<div class="paragraph">بنابراین، ابتدا یک دستور با عنوان docker build را اجرا می‌کنیم که یک Dockerfile را می‌گیرد و دستورات داخل آن را اجرا کرده و در انتها، چیزی را به شما می‌دهد که ما به آن تصویر می‌گوییم و تصویر، یک مشخصه (Identifier) دارد که یک رشته بلند شبیه <a href="https://en.wikipedia.org/wiki/Secure_Hash_Algorithm" target="_blank" rel="noopener noreferrer">SHA</a> است و در عین حال می‌توانید به آن یک نام هم بدهید. مثلاً می‌توانم اسم آن را jamesturnbull/apache بگذارم. این [روش نامگذاری] کاملاً مشابه با نگرشی است که Git هم دارد که اول نام کاربر مالک می‌آید و بعد نامی که می‌خواهیم به مخزن (Repository) بدهیم که در اینجا apache است.</div>
387<div class="paragraph">بعد می‌توانم یک دستور دیگر را اجرا کنم که docker run نامیده می‌شود و تصویر jamesturnbull/apache را برایش مشخص کنم تا وب سرور Apache را از آن تصویر راه‌اندازی کند. و اگر بخواهم تغییری در آن بدهم، آن را متوقف کرده و دوباره docker build را اجرا می‌کنم و از آنجاییکه همه چیز Cache می‌شود، تنها تغییرات مورد نیاز ذخیره می‌شود.</div>
388<h3 class="question-text">خود تصاویر می‌توانند از طریق DockerHub به اشتراک گذاشته شوند و هم شرکتی که اطلاعات محرمانه دارد، می‌تواند مخزن داخلی خودش را راه بیاندازد. درست است؟</h3>
389<div class="paragraph">
389بله، یکی از موارد واقعاً جذابی که در موردش صحبت کردم، قابلیت انتقال است. تصاویر <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را براحتی می‌توان منتقل کرد. ما یک محصول نرم‌افزار به عنوان سرویس (Software as a Service) با عنوان DockerHub داریم که خیلی مشابه با Git Hub است با این تفاوت که برای تصاویر <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> است. یک نسخه اختصاصی آن را هم داریم که آن هم متن باز است و مشابه با Git Hub Enterprise است و پشت فایروال قرار می‌گیرد.</div>
390<div class="paragraph">بنابراین یکی از رویه‌های مرسوم می‌تواند این باشد که یک توسعه‌دهنده در تیم یک تصویر برای نرم‌افزارش بسازد و تستش کند، آنگاه برای اینکه آن را با دیگر اعضاء تیم به اشتراک بگذارد با دستور docker push و ذکر نام تصویر مورد نظر آن را به DockerHub بفرستد. DockerHub همانند Git Hub، مخزن‌های خصوصی هم دارد و اگر بخواهید آن را برای همگان به اشتراک نگذارید می‌توانید تیمی از افرادی داشته باشید که به آن مخزن خصوصی دسترسی داشته باشند. آنگاه می‌توانید به دیگر اعضاء تیم بگویید که یک تصویر جدید آماده شده است و اعضاء دیگر تیم، با دستور docker pull همانند کاری که در Git Hub می‌کنند تصویر جدید را بردارند.</div>
391<div class="paragraph">از آنجاییکه اینجا نیز از مکانیزم کپی به هنگام نوشتن (Copy on Write) استفاده می‌شود و Cache می‌شود تنها، تغییراتی که برای بروزرسانی تصویر شما به نسخه آخر مورد نیاز است را می‌آورد. مدت زیادی برای بروزرسانی طول نمی‌کشد و حجم زیادی از فضای دیسک شما را نمی‌گیرد. همه اعضاء تیم بر روی یک تصویر یکسان کار می‌کنند که فوق‌العاده است چرا که یکی از مشکلات کلاسیک در محیط‌های توسعه نرم‌افزار این است که وقتی افراد جدید به شرکت می‌پیوندند، باید یک محیط پاک و مناسب تحویل بگیرند اما به علت آشفتگی‌هایی که وجود دارد و تغییراتی که رخ می‌دهد، در نهایت به 4-5 نفر در تیم می‌رسید که هر کدام محیط توسعه متفاوتی دارند! مثلاً وقتی بیل به تیم ملحق شده ما یک نسخه از JVM را داشته‌ایم و او اخیراً نسخه James را بروزرسانی نکرده و وقتی جیم به تیم ملحق شده نسخه JVM متفاوتی را استفاده می‌کرده‌ایم و &#8230; . [اما با استفاده از محفظه‌ها] از این مشکلات اجتناب می‌کنید زیرا می‌توانید خیلی سریع و راحت توزیع داشته باشید و لازم نیست که کل یک ماشین مجازی را توزیع کنید یا حتی یک اسکریپت Build را اجرا کنید، یا اینکه حتی تصویر ماشین مجازی را داخل فلش گذاشته و با آن در اتاق‌ها چرخ بزنید، من واقعاً اگر ببینم که هنوز هم کسی چنین کاری را می‌کند شوکه می‌شوم اما این‌ها، واقعاً رخ می‌دهد.</div>
392<h3 class="question-text">شما قصد مقایسه با Git Hub را داشتید. اگر بگوییم که محفظه‌ها، ماشین‌های مجازی سبک هستند آن
392گاه DockerHub ، روشی برای به اشتراک گذاشتن، بهبود دادن و استفاده کردن از این ماشین‌های مجازی است همانطور که با Git Hub همین کارها را با سورس‌کدها می‌کنیم.</h3>
393<div class="paragraph">محفظه‌ها، ماشین‌های مجازی خیلی سبکی هستند. آنها نوع دیگری از ماشین‌های مجازی هستند و برای مجازی‌سازی بیشتر به سیستم‌عامل تکیه دارند با این وجود، همچنان نوعی ماشین مجازی هستند. بله، DockerHub و تمامی ابزارهای <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> برای این طراحی شده‌اند که رویه‌‌ی به اشتراک‌گذاری منابع کامپیوتری را تسریع کنیم. به جای اینکه مجبور باشیم که برای ماشین مجازی یا مثلاً یک نمونه سرویس ابری منتظر شویم، اگر بتوانیم زمان راه‌اندازی را به کسری از ثانیه برسانیم و زمان تولید را بطور شگفت‌آوری سریع کنیم و انتشار تصویر تولیدشده کاملاً ساده و ارزان باشد، در آن صورت خیلی از سختی‌های کارهای توسعه‌دهنده‌ها کاسته می‌شود، دیگر نیاز نیست به سراغ مدیرسیستم بروند و یک ماشین جدید از او بخواهند.</div>
394<div class="paragraph">اخیراً من با یک مدیرسیستم صحبت می‌کردم. او می‌گفت: ماه گذشته خیلی متعجب شده است که تیم توسعه‌دهنده‌ها دیگر از او درخواست ماشین مجازی جدید نمی‌کنند. او گفت من نمی‌دانسته‌ام چه شده است، با خود گفتم شاید به سراغ [سرویس‌های ماشین‌ مجازی] آمازون رفته‌اند یا مشکلی برایشان رخ داده است، اما وقتی آنها را دیدم و علت را پرسیدم گفتند: «آیا به خاطر داری که هفته پیش یک ماشین مجازی قوی گرفتیم؟» گفتم: بله، و آنها گفتند که: «ما روی آن <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را نصب کردیم و برای نرم‌افزارهای مختلف، تعدادی تصویر ساختیم و حالا تنها یک ماشین مجازی داریم و محفظه‌ها را از روی آن تصاویر می‌سازیم و ما واقعاً خوشحالیم. این قطعاً در زمان‌ شما هم صرفه‌جویی می‌کند زیرا دیگر مجبور نیستید که برخی تدارکات را ببینید و تصاویر و ماشین‌های مجازی را برای ما نگهداری و راه‌اندازی کنید» در اینجا مدیر سیستم متوجه شد که دیگر مجبور نیست این کارها را انجام دهد، به جای آن می‌تواند انبوهی از کارها که واقعاً قصد داشته را انجام بدهد، کارهایی که در واقع ارزش‌ بیشتری تولید می‌کنند. تیم توسعه هم دیگر مجبور نبودند که درخواست جدیدی برای دریافت منابع ثبت کنند و یا منتظر [آماده شدن] ماشین‌های مجازی بشوند یا آنها را دوباره بسازند یا اینکه نگران این باشند که آیا ماشین مجازی که تحویل می‌گیرند، مشابه با سیستم محیط عملیاتی هست یا خیر و &#8230; . من فکر می‌کنم این ارزش خارق‌العاده‌ای برای تیم توسعه و هم تیم عملیات فراهم می‌کند.</div>
395<h3>بله، این مثال خوبی بود از ارزش‌آفرینی که برای توسعه‌دهنده‌ها و همینطور مدیرسیستم‌ها ایجاد می‌شود.<br />
396Docker خودش بر روی یک میزبان لینوکس اجرا می‌شود زیرا محفظه‌ها از فایل‌سیستم لایه‌ای و فضاهای نام (Namespace) و دیگر مواردی که شما اشاره کردید، بهره می‌برند. بنابراین از لحاظ تئوری، سیستم‌های مکینتاش و ویندوز نمی‌توانند <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را اجرا کنند. اما ابزاری با نام <a href="http://boot2docker.io/" target="_blank" rel="noopener noreferrer">Boot2Docker</a> وجود دارد که این امکان را فراهم می‌کند. آیا ممکن است مختصری در مورد آن صحبت کنید؟</h3>
397<div class="paragraph">قطعاً، در حال حاضر، <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> خیلی بر لینوکس استوار است و متکی بر کرنل لینوکس است اما قرار نیست همیشه این طور بماند. باگفتن این حرف رازی را فاش نمی‌کنم، [قبلاً] افراد در مورد آن صحبت کرده‌اند: نسبتاً ساده خواهد بود که با استفاده از چیزهایی از قبیل <a href="https://en.wikipedia.org/wiki/FreeBSD_jail" target="_blank" rel="noopener noreferrer">FreeBSD Jails</a> بتوانیم <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را بصورت یک شهروند بومی (Native Citizen) بر روی Apple یا FreeBSD اجرا کنیم. همین طور برای داشتن محفظه‌های بومی بر روی پلتفرم ویندوز هم تکنولوژی‌های سبکی (Thin) مانند پروژه <a href="https://en.wikipedia.org/wiki/Hyper-V" target="_blank" rel="noopener noreferrer">Hyper-V</a> و چیزهای مشابهی مطرح هستند. اما در این اثناء در حالی که این‌ها هنوز اهداف آرمانی هستند، ما ابزاری با عنوان <a href="http://boot2docker.io/" target="_blank" rel="noopener noreferrer">Boot2Docker</a> را هم داریم. فکر می‌کنم <a href="http://boot2docker.io/" target="_blank" rel="noopener noreferrer">Boot2Docker</a> یک ماشین مجازی خیلی کوچک است. در واقع، یک کلاینت <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بهمراه یک ماشین مجازی کوچک به نام DockerHost است که با یک برنامه نصب ساده برای ویندوز و مَک ارائه می‌شود که می‌توانید آن را دانلود کرده و نصب و اجرا کنید. در این صورت، با استفاده از خط فرمان خود می‌توانید با آن ماشین مجازی تعامل کنید. ما به نوعی وانمود می‌کنیم که DockerHost یک برنامه‌ی محلی است. هنوز چالش‌هایی در مورد آن وجود دارد، هنوز مخفی نیست، شما مجبورید که برخی پیکربندی‌های شبکه و &#8230; را انجام دهید، البته ما اغلب آنها را برایتان انجام می‌دهیم. <a href="http://boot2docker.io/" target="_blank" rel="noopener noreferrer">Boot2Docker</a> یک تجربه کاملاً بومی نیست اما چنانچه نرم‌افزارهایتان متکی بر ویندوز یا مک باشد، استفاده محلی از <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را خیلی آسان‌تر می‌کند.</div>
398<h3 class="question-text">بله، قطعاً مواردی کاربرد جدیدی برای کاربرانی که در لینوکس توسعه نمی‌دهند، فراهم می‌کند.<br />
399ما اطلاعات کمی در ارتباط با مبانی <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بیان کردیم. چنانچه شنوندگان می‌خواهند جزییات بیشتری بدانند، به آنها قویاً کتاب <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> ای که جیمز نوشته است را توصیه می‌کنم.<br />
400بیایید کمی به سراغ این برویم که چگونه از محفظه‌های <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> استفاده کنیم؟ شما کمی به آن وارد شدید، هر محفظه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> یک دستور (Command) را اجرا می‌کند که به نوعی توصیه می‌کند که هر محفظه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> تنها یک سرویس را اجرا کند. آیا این دلیل خاصی دارد؟ شما به معماری سرویس‌گرا و ریزسرویس‌ها اشاره کردید. منظور سئوال من این است که آیا دلیل فنی داشته یا نوعی دلیل فلسفی بوده که شما فکر می‌کنید توسعه‌دهنده‌ها باید به روش معماری سرویس‌گرا و ریزسرویس‌ها کار کنند؟</h3>
401<div class="paragraph">در واقع، دلیل فنی نیست و بیشتر به دلیل فلسفی می‌ماند. چیزی جلوی شما را نگرفته است که چندین پروسس را بر روی Û
401ŒÚ© محفظه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> اجرا کنید، شما می‌توانید از ابزارهای مدیریت سرویس مانند <a href="https://en.wikipedia.org/wiki/Systemd" target="_blank" rel="noopener noreferrer">systemd</a> یا <a href="http://supervisord.org/" target="_blank" rel="noopener noreferrer">Supervisor</a> یا چیزهای مشابه آن استفاده کنید تا بتوانید مثلاً کل Stack LAMP را اجرا کنید یعنی Apache، MySQL و PHP همگی را داخل یک محفظه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> اجرا کنید اما در این صورت نرم‌افزار‌ها پیچیده و پیچیده‌تر می‌شوند و ارتباط بین آنها -مواردی از قبیل پورت‌های باز شده، انواع مختلف کنترل دسترسی‌ها، پیکربندی‌ها، یکپارچه‌سازی‌ها و &#8230;- پیچیده‌تر می‌شود.</div>
402<div class="paragraph">مشکلات زیرساخت‌های بزرگ که خلال چند سال گذشته، با آن روبرو بوده‌ایم به علت این بوده است که افراد نمی‌دانستند نرم‌افزارهای‌شان چطور با هم تعامل دارند. خصوصاً در سیستم‌ها معظم (Enterprise)، افرادی که نرم‌افزار اصلی را نوشته‌اند دیگر در شرکت کار نمی‌کنند و [به جای آن] مقداری دانش به ارث برده شده و حجمی از داده‌های مستندشده وجود دارد و بخش عمده اشکالزدایی مشکل تنها مربوط به شناسایی این است که هم‌اکنون نرم‌افزارها چطور کار می‌کند و چطور با هم صحبت می‌کنند.</div>
403<div class="paragraph">فکر می‌کنم در دنیای معماری‌ سرویس‌گرا و ریزسرویس‌ها، می‌توانید بگویید: من در نرم‌افزارم 10 محفظه دارم، من راهی برای بازرسی آنها و مشاهده چگونگی متصل شدن آنها به هم دارم &#8211; ما قبلاً در مورد لینک بین محفظه‌ها و باز کردن پورت‌ها صحبت کردیم- من می‌توانم همه این‌ها را عمل‌گرایانه واکاوی کنم و ببینم که بله، من 10 محفظه دارم که فلان پورت‌هایشان باز شده است، فلان محفظه و فلان محفظه و فلان محفظه به فلان شکل به هم لینک شده‌اند و &#8230;، به این طریق، می‌توانم متوجه اساس معماری نرم‌افزارم بشوم و بفهمم فلان محفظه است که باعث مشکل شده است فکر می‌کنم این نوع تجربه‌های خطازدایی خیلی ساده‌تر است. من دارم از قول کسی می‌گویم که در چند سال گذشته بیشتر بر روی برطرف کردن مشکلات عملیاتی (Operational) تمرکز داشته است. همچنین فکر می‌کنم دیدگاه معماری سرویس‌گرا، از لحاظ تولید نرم‌افزارها و تقلید (Mocking) و تست کردن آنها و همینطور از لحاظ قابلیت دیگر افراد برای تعامل برقرار کردن با آن‌ها، کار را خیلی ساده‌تر می‌کند. مثال‌های تامه‌ای برای آن وجود دارد مثلاً <a href="http://aws.amazon.com/ec2/" target="_blank" rel="noopener noreferrer">Amazon</a> یک نمونه کلاسیک آن است. گروه توسعه‌دهنده‌های Amazon، API ها را به این روش منتشر می‌کنند که همه چیزهای داخل آن برای توسعه‌دهنده‌های گروه‌های دیگر به نوعی، جعبه‌سیاه است و تنها بیان مشخصات API (API Spec.) منتشر می‌شود و گروه‌های دیگر سرویس‌هایشان را برآن اساس می‌نویسند. این شاید کمی افراطی باشد اما به نظر من، خیلی از نرم‌افزارها و سرویس‌ها وجود دارند که با این جهت‌دهی، ساختن آنها و مدیریت کردن و تست آنها، خیلی ساده‌تر است، یعنی چنانچه [تنها] بیان مشخصاتی از API، سرویس یا فرمت داده‌ها و یا فرمت <a href="https://github.com/google/protobuf" target="_blank" rel="noopener noreferrer">Protobuf</a> آنها منتشر شود و دیگران برآن اساس، مصرفش کنند. این دلیل بوده است که <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را به این نوع نگاه هدایت کرده است.</div>
404<h3 class="question-text">اگر من نرم‌افزاری داشته باشم و آن را به تعدادی سرویس مجزا تفکیک کنم و Ù
404‡Ø± سرویس را در محفظه خودش قرار دهم، چگونه می‌توانم آنها را راه‌ بیاندازم و اتصالات بین آنها را برقرار کنم فرضاً اگر برای اتصال سرور برنامه‌ام به پایگاه داده از یک لینک استفاده کرده باشم، چطور همه آنها را راه بیاندازم و وابستگی‌های بین آنها را رسیدگی کنم مثلاً مواردی از این قبیل که پایگاه داده باید قبل از برنامه اجرا شود و &#8230;</h3>
405<div class="paragraph">این ناحیه‌ای [از نیازمندی‌ها] است که خیلی سریع در حال توسعه است. در حال حاضر <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> کمی بیش از یک سال عمر دارد. فکر می‌کنم یک سال و نیم باشد. (زمان ضبط این مصاحبه، تابستان سال 2014 بوده است -مترجم) بنابراین مثل نطفه‌ای می‌ماند که بر روی انواع مختلفی از تکنولوژی‌ها ایستاده است. اعضای اولیه‌ی آن روی بخش‌های پردازشی [متمرکز] بوده‌اند و اکنون مرحله بعدی که ما به آن فکر می‌کنیم ماجرای هم‌نواسازی (Orchestration) است. شما مثال کلاسیکش را گفتید که یک وب‌سرور را می‌خواهید راه بیاندازید اما به این نیاز است که اول پایگاه داده راه انداخته شود. این مثال ساده‌اش است، می‌توان مثال‌های پیچیده‌تری داشت که مثلاً چندین پایگاه داده در نواحی مختلف جغرافیایی قرار گرفته باشد یا چندین لایه برنامه داشته باشیم و &#8230; . ما در اکوسیستم Docker، متوجه نیاز به ابزار Config شدیم. Config یک ابزار سازماندهی است که به شما اجازه می‌دهد که مجموعه‌ای از محفظه‌ها تعریف کنید. در آن گفته می‌شود که یک سرویس از فلان محفظه و فلان محفظه ساخته شده است و آنها را به این ترتیب اجرا کن و به هم لینکشان کن. بنابراین، این [ابزار] برخی از این گونه مشکلات را حل خواهد کرد. در نتیجه آن حجم زیادی از ابزارها، به اکوسیستم اضافه خواهد شد که شامل یکپارچه‌سازی با چیزهایی از قبیل <a href="https://zookeeper.apache.org/" target="_blank" rel="noopener noreferrer">ZooKeeper</a> و ابزارهای مرتبط با کشف سرویس هم خواهد بود. بنابراین یکی از گام‌های جذاب بعدی تولید همین ابزارهای هم‌نواسازی و مدیریت‌های شخصی‌سازی شده خواهد بود.</div>
406<h3 class="question-text">و آیا قرار است امکان اجرای محفظه‌ها بر روی چندین میزبان هم اضافه شود؟ تا الان ما داشتیم در مورد اجرای <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بر روی یک میزبان کوچک و منفرد صحبت می‌کردیم. درسته؟</h3>
407<div class="paragraph">ما یک پروتوتایپ ابزار با نام <a href="https://www.docker.com/docker-swarm" target="_blank" rel="noopener noreferrer">libswarm</a> منتشر کرده‌ایم. این ابزار در واقع برای این طراحی شده است تا پروتوتایپی در مورد نحوه صحبت کردن میزبان‌های <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> با همدیگر باشد. در حال حاضر محفظه‌هایی که بر روی یک میزبان <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> قرار گرفته‌اند باید از شبکه برای صحبت با یکدیگر استفاده کنند اما واقعاً باید یک کانال ارتباطی پشتی برای این منظور می‌داشتند. ما باید به امر تعاملات بین <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> ها فائق بیاییم. اینکه یک میزبان <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بتواند بگوید که: «من یک میزبان <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> هستم و یک سرویس وب Apache دارم» و یک میزبان دیگر بگوید: «من هم ی
407ک پایگاه داده دارم که باید Apache آن را بیابد. آیا می‌توانی یکی از محفظه‌های خود را به یکی از محفظه‌های من لینک کنی؟»</div>
408<div class="paragraph">به این ترتیب با این امکانات، می‌توانید ماجراهای بسیار هیجان‌انگیزی از قبیل مقیاس‌پذیری، افزونگی و &#8230; را مدیریت کنید. می‌توانید برنامه‌های واقعاً پیچیده‌ای را راه بیاندازید که تا کنون برای سازمان‌ها خیلی پرچالش بوده است.</div>
409<h3 class="question-text">Docker چطور با جنبش زیرساخت‌های تغییرناپذیر (Immutable Infrastructure) در <a href="http://en.wikipedia.org/wiki/DevOps" target="_blank" rel="noopener noreferrer">DevOps</a> تطبیق پیدا می‌کند؟ آیا <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> جایگزین یا رقیبی برای ابزارهایی از قبیل <a href="https://www.chef.io/" target="_blank" rel="noopener noreferrer">Chef</a> و <a href="https://puppetlabs.com/" target="_blank" rel="noopener noreferrer">Puppet</a> است؟</h3>
410<div class="paragraph">فکر می‌کنم بیشتر مکمل هم هستند. زیرساخت‌های تغییرناپذیر در واقع نرم‌افزارهای بدون حالت هستند. شما یک واحد محاسباتی که در اینجا همان محفظه است را می‌سازید که می‌تواند شامل سورس‌کد و همه چیزهای دیگر باشد اما در آن داده‌هایی برای بروزرسانی یا پایگاه داده نیست بلکه یک سیستم بسته است و در پرداز‌ش‌های با کارایی بالا در حوزه‌های دارویی و علمی خیلی رایج است. همین طور در کارگاه‌های آموزشی عملیات وب خیلی رایج شده است زیرا همانطور که گفتیم علت خیلی از مشکلات این است که آشفتگی پیش می‌آید و تغییرات تدریجی رخ می‌دهد بنابراین میزبان شما تفاوت پیدا می‌کند، در این مثال، اگر بخواهید میزبان را دوباره بسازید می‌توانید که آن را پاک کرده و یک نمونه جدید بسازید و تضمین شده است که به آخرین حالت خوب قبلی برگشت داده می‌شوید.</div>
411<div class="paragraph">Puppet و <a href="https://www.chef.io/" target="_blank" rel="noopener noreferrer">Chef</a> و همینطور <a href="http://www.ansible.com/" target="_blank" rel="noopener noreferrer">Ansible</a> و <a href="http://saltstack.com/" target="_blank" rel="noopener noreferrer">Salt</a> همگی برای مدیریت این آشفتگی‌ها و تغییرات تدریجی در پیکربندی بوجود آمده‌اند. [اگر از محفظه‌ها استفاده کنید] احتمالاً نیاز کمتری به استفاده از آنها خواهید داشت زیرا محفظه‌ها خیلی خیلی کو‌تاه‌عمرتر هستند و تغییرناپذیر (Immutable) هستند. خیلی ارزان‌تر خواهد بود که به جای استفاده از <a href="https://puppetlabs.com/" target="_blank" rel="noopener noreferrer">Puppet</a> و <a href="https://www.chef.io/" target="_blank" rel="noopener noreferrer">Chef</a> ، یک محفظه را به حالت قبلی خود بازسازی کنید. ممکن است از آنها فقط برای این منظور استفاده کنید که محفظه‌ها را از بین برده و نمونه‌های جدید از آنها بسازید. در این صورت <a href="https://puppetlabs.com/" target="_blank" rel="noopener noreferrer">Puppet</a> و <a href="https://www.chef.io/" target="_blank" rel="noopener noreferrer">Chef</a> نقش مکمل را خواهند داشت به این معنا که میزبان <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> به جای مدیریت شدن نیاز به تدارک دیده شدن دارد. به این ترتیب که تصاویر بعدی <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> باید تولید شود. شما داخل ماژول <a href="https://puppetlabs.com/" target="_blank" rel="noopener noreferrer">Puppet</a> یا دستورالعمل <a href="https://www.chef.io/" target="_blank" rel="noopener noreferrer">Chef</a> احتمالاً اطلاعات مفیدی درباره چگونگی ساختن برنامه خود را دارید. وقتی بخواهید آنها را برای <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بکار ببرید، دیگر نیازی نیست که بخش نگهداری مبتنی بر امور بلندمدت را داشته باشید و تنها اگر بخواهید، آنها [محفظه‌ها] را نابود و دوباره‌سازی می‌کنید.</div>
412<h3 class="question-text">بله، قطعاً می‌توانم یک جنبه مکمل بودن را در آنها ببینم.<br />
413من شنیده‌ام که محفظه‌های <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> به محفظه‌های موجود در صنعت حمل و نقل در کشتی‌ها، قطارها و کامیون‌ها، تشبیه می‌شود. آیا ممکن است کمی آن را توضیح دهید.</h3>
414<div class="paragraph">این تشبیه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> به بنادر و محفظه‌ها و اصطلاحات این صنعت چیزی است که ما آن را هنگام توسعه‌ی زبان خیلی بسط نمی‌دادیم. پیش از محفظه‌های چند منظوره (محفظه‌های بزرگ فولادی که با آن آشنا هستید و در کشتی‌های باربری قرار می‌گیرند) کاری که انجام می‌شد این بود که یک صندوق‌دار یا تحویل‌دار در کشتی وجود داشت. کار آن‌ها این بود که کالاها را تحویل گرفته و طوری در کشتی قرار دهند که از ظرفیت تجاوز نکند، باروت کنار کبریت نباشد و تمام مراقبت‌های دیگری که مثلاً برای نگهداری ادویه‌های گران‌بها لازم است را انجام می‌دادند. این‌ها فرآیند بارگذاری و تخلیه را کاملاً دشوار می‌کرد. اغلب روزها طول می‌کشید تا کشتی را بادقت بار بزنند. این به آن خاطر آن بود که اگر در سفر مشکلی پیش می‌آمد مثلاً اگر آب وارد چیزی می‌شد احتمال زیادی وجود داشت که بخشی از محموله خود را از دست بدهید. این، سربار قابل توجهی به فرآیند حمل و نقل می‌افزود تا اینکه محفظه‌ها مطرح شدند و فردی آمد و گفت: چطور است که جعبه‌هایی بسازیم که همگی یکسان باشند؛ همگی قلاب‌ها سیستم برچسب‌گذاری یکسانی داشته باشند تا یک سیستم یکپارچه‌‌ی شناسایی داشته باشیم. در آنصورت دیگر اهمیت نخواهد داشت که چه چیزی را داخل آنها بار بزنیم زیرا از هم تفکیک شده‌اند و کاملاً قابل حمل خواهند بود. می‌توانید آنها را از کشتی تخلیه Ú©Ù
414†ÛŒØ¯ و در کامیون بگذارید و نیازی نیست به عنوان بخشی از این فرآیند حتی محفظه‌ها را باز کنید.</div>
415<div class="paragraph">وقتی ما <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را می‌ساختیم فکر می‌کردیم که این تشبیه، واقعاً مناسب است. ما واقعاً اهمیت نمی‌دادیم که چه چیزی را در داخل محفظه‌ها قرار می‌دهید. می‌تواند 10 عدد وب‌سرور باشد یا یک پایگاه داده بزرگ باشد یا یک سرویس منفرد باشد، هرچه که بخواهید می‌تواند باشد اما آنچه ما برایتان فراهم می‌کنیم روشی برای انتقال این محفظه از طریق تصویر آن به جاهای دیگر است و روشی برای تیم عملیات فراهم می‌کنیم که قلاب‌ها و برچسب‌های یکسانی داشته باشد تا به این ترتیب تیم توسعه واقعاً به ظرفیت داخل محفظه‌ها توجه کنند و تیم عملیات به مدیریت آن فکر کنند یعنی مانند صنعت حمل‌ونقل، به نوعی به جابجایی آن، برداشتن آن از کشتی با جرثقیل و قرار دادن آن در کامیون، فکر کنند. به همین علت بود که این تشبیه برای ما تقویت می‌شد البته تشبیه کاملی نیست، ممکن است بحث شود که این یک مثال خوب و ساده‌شده از تاریخچه صنعت ترابری مدرن است اما نه اینگونه نیست. این بیشتر از جنبه بازاریابی آن است تا اینکه یک ماجرای فلسفی عمیق باشد.</div>
416<h3 class="question-text">اما باز هم نتیجه نهایی آن خیلی مشابه است. شما در مورد تسهیل چشمگیری که در بارگذاری و تخلیه کالاها در کشتی‌ها، کامیون‌ها یا قطارها ایجاد می‌شود، صحبت کردید و [از طرفی هم] برای ما مثال‌هایی از بهبود کارایی که در این محفظه‌های ماشین‌های مجازی و تسریعی که در امور توسعه و عملیات ایجاد می‌شود صحبت کردید.</h3>
417<div class="paragraph">چیزی که به آن اشاره نکردم این بود که بعد از اینکه محفظه‌های چند منطوره معرفی شد، زمان حمل و نقل 70 درصد کاهش یافت. در مورد هزینه‌اش هم دقیقاً نمی‌دانم، من در دهه 40 زندگی‌ام هستم و این مربوط به قبل از تولد من است اما پدر و مادرم به خاطر دارند که مثلاً ارسال یک کالای مصرفی از استرالیا به انگلیس یک کار کاملاً پرهزینه و غیرمتعارف بوده است و ممکن بود 6 تا 8 هفته منتظر می‌شدید تا یک بسته از لندن به سیدنی برسد. فرآیند محفظه‌های چند منظوره به شدت تجارت و حمل و نقل بین‌المللی را تسریع کرد و در واقع، روش تجارت افراد را تغییر داد. به همین خاطر است که ما از این تشبیه استفاده می‌کنیم. ما فکر می‌کنیم این ظرفیت وجود دارد که این [استفاده از محفظه‌ها] باعث تغییرات اساسی در روش تولید، مدیریت و انجام امور عملیات نرم‌افزارها شود و روش آتی در انجام پردازش‌ها و کارها باشد.</div>
418<h3 class="question-text">بنابراین خیلی دشوار است که همان مرتبه از بهبود حاصل شود&#8230;</h3>
419<div class="paragraph">واضح است که هنوز چالش‌هایی وجود دارد اما فکر می‌کنم لازم است افراد به خاطر بیاورند که چه تاریخچه مختصری در این مورد داریم. خود ماشین‌های مجازی تکنولوژی نسبتاً جدیدی به حساب می‌آید، اولین چیزی که واقعاً تجاری شد، <a href="https://en.wikipedia.org/wiki/VMware" target="_blank" rel="noopener noreferrer">VMWare</a> بود که حدود 10-11 سال عمر دارد و به عنوان یک تکنولوژی، به نسبت نوپا است.</div>
420<div class="paragraph">به وضوح ماشین‌های مجازی، به شدت نحوه کار با زیرساخت‌ها را دگرگون کرده است. در واقع، آنها سرویس‌های ابری را ممکن ساختند؛ بدون ماشین‌های مجازی سرویس‌های ابری و برخی موارد دیگر، وجود نداشت. این‌ها در مدت زمان کوتاهی رخ داد. اکنون که به مفهوم سرویس‌های ابری نگاه می‌کنیم، تبدیل به یک چیز عادی شده است. مثلاً این‌که که سروری داشته باشید که 100 ماشین مجازی را اجرا می‌کند، 20 سال پیش جزء بیشتر به معجزه شبیه بود. و من کارم را در دنیای MainFrameها شروع کردم که در آن چیزهایی مثل <a href="https://en.wikipedia.org/wiki/Logical_partition" target="_blank" rel="noopener noreferrer">پارتیشن‌بندی منطقی</a> (Logical Partitioning) مطرح بود که مثل یک مجسمه‌ی یادبود یک میلیون دلاری بود. بنابراین فکر می‌کنم طی 10-12 سال گذشته تغییرات جذابی در مورد مدیریت زیرساخت‌ها را دیده‌ایم، امیدوارم Docker، ادامه راه تغییرات بعدی خلال 4-5 سال آینده باشد.</div>
421<h3 class="question-text">قطعاً، کاملاً منطقی به نظر می‌رسد. آیا به نظر شما Docker، یک جایگزین برای روش‌های سنتی مجازی‌سازی سخت‌افزار است؟</h3>
422<div class="paragraph">فکر می‌کنم در محیط‌های پلتفرم به عنوان سرویس (Platform as a Service) و زیرساخت به عنوان سرویس (Infrastru
422cture as a Service) مانند <a href="https://www.openstack.org/" target="_blank" rel="noopener noreferrer">OpenStack</a> و <a href="https://www.cloudfoundry.org/" target="_blank" rel="noopener noreferrer">CloudFoundry</a> و <a href="http://aws.amazon.com/ec2/" target="_blank" rel="noopener noreferrer">Amazon</a> ماشین‌های مجازی در واقع منابع ایده‌آلی برای پردازش نیستند. آنها کاملاً سنگین هستند و سربار چشمگیری به زیرساخت‌های شرکت اضافه می‌کنند. فکر می‌کنم برای انواع مشخصی از کارهایی که در فضای سرویس‌های ابری به آن علاقه نشان داده می‌شود، [بکارگیری] محفظه‌ها خیلی منطقی‌تر است. شما به زیرساخت‌های تغییرناپذیر (Immutable Infrastructure) و پردازش‌های با کارایی بالا اشاره کردید، این‌ها طبیعتاً با <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> سازگاری دارند. همینطور برای هرکسی که معماری سرویس‌گرا یا ریزسرویس داشته باشد و یا گذرگاه سرویس و چیزهای مشابه داشته باشد، <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> ایده‌آل است. من قویاً توصیه می‌کنم که نگاهی به آن بیاندازند. <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> به طور طبیعی کمک می‌کند که با یک روش کاملاً سالم به معماری خود بیاندیشید. البته واضح است که برخی سرورهای فیزیکی یا کارهای خاص یا میراثی (Legacy) هم وجود دارند که نمی‌توانید به سمت این نوع معماری بروید. من اخیراً به شرکتی رفتم که نرم‌افزارهای گسترده‌ای بر روی کوبول داشتند و جایگزین کردن آن با محفظه‌های <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> واقع‌بینانه نبود. همینطور الان <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> خیلی متمرکز بر لینوکس است. اما خصوصاً در دنیای توسعه و تست که در مورد یکپارچه‌سازی مستمر (Continuous Integration) می‌اندیشیم و نگرانی‌های اصلی‌مان مساعی و همکاری در کارها، مدت زمان رسیدن محصول به بازار (Time to Market) و انتقال کد از محیط توسعه به محیط عملیات است، <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> یک زمینه جذاب است.</div>
423<h3 class="question-text">ابزارهای زیادی داخل و حول <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> به وجود آمده است. ما به تعدادی از آنها اشاره کردیم. شما به <a href="http://www.fig.sh/" target="_blank" rel="noopener noreferrer">Fig</a> اشاره کردید. موارد خیلی زیادی هست مثلاً <a href="https://coreos.com/" target="_blank" rel="noopener noreferrer">CoreOs</a> ، <a href="https://en.wikipedia.org/wiki/Apache_Mesos#MESOS" target="_blank" rel="noopener noreferrer">Messos</a> ، <a href="http://panamax.io/get-panamax/" target="_blank" rel="noopener noreferrer">Panamax</a> و &#8230; . فکر می‌کنید چرا اکنون <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> این حد پرطرفدار شده است و این همه فعالیت را به خود جذب کرده است؟</h3>
424<div class="paragraph">شما قبلاً کمی درباره Solar Zones و <a href="https://en.wikipedia.org/wiki/FreeBSD_jail" target="_blank" rel="noopener noreferrer">FreeBSD Jails</a> صحبت کردید. قبل از <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> در دنیای لینوکس، محفظه‌های <a href="https://www.docker.com/docker-swarm" target="_blank" rel="noopener noreferrer">LXC</a> اجرا می‌شد که محفظه‌های لینوکس هم خوانده می‌شدند و ما برخی از ایده‌های خود را از آن تکنولوژی برگرفتیم. فکر می‌کنم مشکل بزرگ همه این تکنولوژی‌ها این بود که استفاده کردن آنها به واقع ساده نبود.</div>
425<div class="paragraph">Solar Zone ، <a href="https://en.wikipedia.org/wiki/FreeBSD_jail" target="_blank" rel="noopener noreferrer">FreeBSD Jails</a> ، <a href="https://www.docker.com/docker-swarm" target="_blank" rel="noopener noreferrer">LXC</a> ، <a href="https://en.wikipedia.org/wiki/Chroot" target="_blank" rel="noopener noreferrer">chroot</a> این‌ها، همگی به یک مدیر سیستم زیرک یا یک مهندس زیرک‌تر برای توسعه نیاز داشتند تا بتوان با آن کار کرد. بنابراین اولین چیزی که ما به دنبالش بودیم این بود که <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> رویه‌ای داشته باشد که توسعه‌دهنده‌هایی که هیچ چیزی در مورد زیرساخت‌ها نمی‌دانند بتوانند از آن استفاده کنند. هر زمانی که می‌خواستیم چیز [جدیدی] بسازیم، باز به این توجه می‌کردیم که منجر به افزایش پیچیدگÛ
425Œ نشود که بخواهد مانع استفاده از آن ابزار توسط یک مهندس جلوکار (Front-end Engineer) بشود که هیچ اطلاعی در مورد ماشین‌های مجازی، مجازی‌سازی و پشته‌ای که برنامه بر روی آن اجرا شده، ندارد. تمرکز ما بر این بوده است و عامل حجم چشمگیری از استنتاج‌ها همین بوده است. این واقعیت [مهمی است] که توسعه‌دهنده‌ها می‌توانند در مدت زمان خیلی کوتاهی، <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را اجرا و استفاده کنند و نیازی نیست که هیچ چیزی در مورد کرنل لینوکس و نحوه کارکرد فضاهای نام (Namespace) و گروه‌های کنترلی (CGroup) بدانند، نیازی نیست هیچ چیزی در مورد زیرساخت‌ها بدانند و تنها به دانستن تعدادی دستورات خیلی ابتدایی و امور شبکه‌ای خیلی ابتدایی نیاز دارند مثلاً اینکه فلان پورت به فلان پورت دیگر نگاشت یافته است. این‌ها، چیزهای واقعاً ساده‌ای هستند.</div>
426<div class="paragraph">من قبلاً این مثال را زدم که دیگر نیاز نیست با مدیرسیستم صحبت کنید تا یک منبعی دریافت کنید. این برای توسعه‌دهند‌ه‌ها، چیز مهمی است. دیگر مجبور نخواهند بود که یک تیکت درخواست ثبت کنند که من یک کپی از پایگاه داده محیط عملیاتی را می‌خواهم که بر روی یک ماشین مجازی در محیط تست ایجاد شود و کلی منتظرش شوید، نه به خاطر اینکه مدیر سیستم وقت را تلف می‌کند بلکه به خاطر اینکه آنها علاوه براینکه سعی می‌کنند سرویس‌های فعال باشمد به هزارها تیکت مانند آن جواب می‌دهند. به این طریق، کمک می‌شود این نوع تعاملات ترسناک کاهش ‌یابد. به همین خاطر است که توسعه‌دهنده‌ها عاشق آن هستند. افراد تیم عملیات هم، آن را دوست دارند زیرا به طبیعت مقیاس‌پذیر جذاب آن می‌نگرند، برخی از آنها صورتحساب‌های خیلی سنگینی، به شرکت‌هایی مانند <a href="https://en.wikipedia.org/wiki/VMware" target="_blank" rel="noopener noreferrer">VMWare</a> پرداخت می‌کرده‌اند و ماشین‌های مجازی و لایسنس‌های زیادی خریداری کرده بودند. به این ترتیب امیدوارند مقداری از این هزینه‌ها کاسته شود و مدیریت کارها راحت‌تر شود یا اینکه از برخی بحث‌های بین آنها و توسعه‌دهنده‌ها کاسته شود که توسعه دهنده بگوید بر روی ماشین من کار می‌کند و فرد عملیاتی بگوید اما در محیط عملیاتی برای مشتری‌ها کار نمی‌کند. من 25 سال به عنوان مهندس در تیم عملیات مشغول بوده‌ام. می‌توانم مثال‌های بی‌شماری از بحث‌هایی بزنم که در محوطه پردیس و اغلب در ساعت 4 صبح داشته‌ام که برخی توسعه‌دهنده‌ها [به نشان ناامیدی] دستشان را بالا می‌برند و می‌گویند که وقتی من آن را build کردم برایم کار می‌کرد، مشکل تو چیه؟ تو احمقی! و متأسفانه این گونه تعاملات متداول است و خوشایند نیست. اگر بتوانید ذره‌ای از آن بکاهید ارزش مالی خیلی زیادی دارد؛ از لحاظ زمان فعال بودن [سرویس] و روحیه و همکاری [افراد] و سایر چیزها. به همین خاطر به نظر من خیلی هیجان‌انگیز است.</div>
427<h3 class="question-text">چه چیزهایی برای آینده <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> در نظر گرفته شده است؟ شما به نوعی به آن‌چه ممکن است اتفاق بیفتد اشاره کردید.</h3>
428<div class="paragraph">بله، ما داریم خیلی سخت روی محصول DockerHub کار می‌کنیم که امکانات خیلی بیشتری در آن قرار دهیم تا اعتبارسنجی بهتری در ارتباط با مفاهیمی از قبیل تیم و سازمان و مخزن‌های خصوصی و عمومی داشته باشد. این‌ها این امکان را خواهد داد که افراد بتوانند به همان طریقی که مثلاً از GitHub استفاده می‌کنند با آن کار کنند.</div>
429<div class="paragraph">[مورد دیگر] این است که به GitHub قلاب بخورد و بتوانید برآن اساس کارهایی را انجام دهید مثلاً اگر سورس‌کدهای خود را در GitHub داشتید و تغییراتی در سورس‌کدهای خود در GitHub دادید تصاویر <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> بصورت خودکار بروزرسانی شود. این می‌تواند خیلی جالب باشد. ما بدنبال گسترش آن هستیم. ما یک محصول متن باز داریم که بخشی از این عملکرد را فراهم می‌کند. ما می‌خواهیم کل DockerHub را به صورت <a href="https://en.wikipedia.org/wiki/On-premises_software" target="_blank" rel="noopener noreferrer">در-محل</a> (On-premises) ارائه کنیم. احتمالاً ابتدای سال آینده این کار را خواهیم کرد. همه کسانی که در مورد ارسال اطلاعات خصوصی خود به خارج از فایروال خود ناراحت بودند می‌توانند دقیقاً مانند GitHub Enterprise آن را بصورت داخلی مدیریت کنند.</div>
430<div class="paragraph">و بر روی خود محصول Docker، در جهت افزایش زنجیره ارزش آن حرکت می‌کنیم. در حال حاضر، ما در مدیریت گروه‌های کوچک محفظه‌ها بر روی Û
430ŒÚ© میزبان ِDocker خوب هستیم. ما می‌خواهیم برنامه‌های پیچیده که بر روی چندین میزبان <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> در مناطق مختلف قرار گرفته‌اند را بصورت خودکار مدیریت کنیم. تکنولوژی که حول آن کار می‌کنیم این است که نحوی از خودکارسازی داشته باشیم که استفاده از آن برای افراد واقعاً ساده باشد، توسعه‌دهنده‌ها باید بتوانند بدون درگیر شدن با تعداد زیادی از افراد دیگر، یک پشته ساده بسازند و افراد تیم عملیات باید به همه‌ امکانات دسترسی داشته باشند، و به این صورت درخواست توسعه‌دهندگان را پاسخ می‌دهیم.</div>
431<h3 class="question-text">چیزی که شما الان اشاره کردید اما من صراحتاً به آن اشاره نکرده بودم این است که <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> یک ابزار متن‌باز است و هرکسی آزاد است که از آن استفاده کند. <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> همینطور نام شرکت پشت سر پروژه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> هم هست. مدل تجاری این شرکت چگونه است؟ آیا نواحی مشخصی از این اکوسیستم و محوطه [ابزارهای مرتبط با Docker] هست که شرکت برای خود مدنظر قرار داده است؟</h3>
432<div class="paragraph">در واقع، شرکت <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> به دو علت وجود دارد، یکی این است که ما بسیاری از سرپرستی‌های حول پروژه <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را انجام می‌دهیم. ما اخیراً با خود پروژه‌های متن‌باز، مشارکت‌های گسترده‌ای داشته‌ایم.</div>
433<div class="paragraph">مدل تجاری ما برپایه چند چیز است. یکی در پروژه DockerHub است، [در آنجا] باید بابت مخزن‌های اختصاصی که به آنها اشاره کردم پرداخت کنید، دقیقاً مشابه با خرید مخزن‌های اختصاصی در Git Hub است. همینطور ما سرویس‌هایی بر روی آن داریم (فکر می‌کنم 4 سرویس باشد) که فکر می‌کنیم برای خیلی از افراد جذاب باشد [و این سرویس‌های اضافی پولی است].</div>
434<div class="paragraph">به علاوه ما خدمات آموزشی مرتبط با ابزار متن‌باز <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> ارائه می‌کنیم، کمک می‌کنیم که کار با <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را شروع کنید، ما کلاس‌های آموزشی داریم، کلاس‌های عمومی دوروزه و &#8230;.، خدماتی داریم که کمک‌تان می‌کنیم برخی مفاهیم قدیمی را با <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> اجرا کنید و آن را راه بیاندازید. و همینطور، خدمات پشتیبانی ارائه می‌دهیم، اگر مشکلی داشته باشید می‌توانید از ما بپرسید.</div>
435<div class="paragraph">در آینده، قرار است محصولات بیشتری در این زنجیره ارزش توسعه دهیم. ما فکر می‌کنیم افراد حاضرند بابت این محصولات، پرداخت داشته باشند. یکی از چیزهایی که البته فقط مربوط به دنیای محفظه‌ها نیست، بلکه حوزه‌اش وسیع‌تر است، یک ابزار واقعاً قدرتمند همنواسازی (Orchestration) و یک ابزار واقعاً قدرتمند مدیریت سرویس (Service Management) است. فکر می‌کنم این ابزارها در دسترس عموم نیست یا خیلی خیلی گران هستند. <a href="http://www.bmc.com/it-solutions/cloud-lifecycle-management.html" target="_blank" rel="noopener noreferrer">BMC</a> یا <a href="https://en.wikipedia.org/wiki/HP_OpenView" target="_blank" rel="noopener noreferrer">HPOpenView</a> یا حتی محصولات <a href="https://en.wikipedia.org/wiki/VMware" target="_blank" rel="noopener noreferrer">VMWare</a> که اخیراً به جریان افتاده و &#8230; همگی نیاز به استعدادهای مهندسی قوی دارند. مثلاً <a href="https://zookeeper.apache.org/" target="_blank" rel="noopener noreferrer">
435ZooKeeper</a> واقعاً ابزار فوق‌العاده‌ای است اما نیاز به تجربه‌های خیلی بالغ مهندسی دارد و مهندسی خیلی قوی نیاز است تا بتوانید آن را با محیط خود تطبیق دهید، این‌ها ابزارهای آماده مصرف نیستند. بنابراین ما فکر می‌کنیم اگر بتوانیم ابزارهای هم‌نوایی و مدیریت واقعاً قوی داشته باشیم که با تمرکز بر روی <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> باشد اما با این امید که بتوانیم با ابزارهای دیگر هم یکپارچه شویم، افراد حاضر خواهند شد که برایش پول بدهند.</div>
436<h3 class="question-text">آیا فکر می‌کنید مطلبی هست که پوشش نداشته باشیم و شنوندگان بخواهند در موردش بدانند؟</h3>
437<div class="paragraph">فکر می‌کنم تقریباً همه چیز را پوشش دادیم. فکر می‌کنم به قدری تشریح کردیم که افراد را تشویق کرده باشد که <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> را یک امتحانی بکنند، به مقدار کافی پوشش دادیم.</div>
438<h3 class="question-text">برای امتحان کردن آن، افراد کجا می‌توانند اطلاعات بیشتری در مورد آن بدست بیاورند و شما را دنبال کنند؟</h3>
439<div class="paragraph">آدرس وب‌سایت، <a href="http://www.docker.com" target="_blank" rel="noopener noreferrer">www.docker.com</a> است. در آن جا، خودآموز‌های خیلی ساده‌ای وجود دارد. فکر می‌کنم در بالای صفحه لینکی با عنوان Try it! وجود دارد که شما را به یک خودآموز 5 دقیقه‌ای هدایت می‌کند که یک آشنایی خیلی ساده ایجاد می‌کند و بعد برای شما تعدادی لینک برای دسترسی به مستندات، نحوه نصب و نحوه شروع به کار قراهم می‌کند. من همینطور کتابی با عنوان کتاب <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> نوشته‌ام که از آدرس <a href="http://www.dockerbook.com" target="_blank" rel="noopener noreferrer">www.dockerbook.com</a> در دسترس است که واقعاً یک آشنایی ساده فراهم می‌کند و هیچ پیش‌فرضی در مورد دانش شما ندارد و کمک‌تان می‌کند که از صفر تا کارهای به اصطلاح کاملاً پیچیده را انجام دهید. من از بی‌اطلاعی کامل از <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> شروع کرده و از نصب Docker، ساختن تصاویر Docker، انجام امور خیلی ابتدایی <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> تا کارهای پیچیده کشف سرویس با معرفی ابزارهایی مانند <a href="http://www.fig.sh/" target="_blank" rel="noopener noreferrer">Fig</a> و <a href="https://www.consul.io/" target="_blank" rel="noopener noreferrer">Consul</a> و &#8230; و همینطور گسترش دادن <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> توسط خودتان و یکپارچه شدن با <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> از طریق API یکپارچه‌سازی را بحث کرده‌ام. این کتاب از ماه جولای [سال 2014] در دسترس قرار گرفته است. این کتاب خیلی ارزان است (9.99 دلار). و در ارتباط با خودم، می‌توانید من را در توییتر به آدرس @kartar بیابید، وب سایتی هم به آدرس <a href="http://www.kartar.net" target="_blank" rel="noopener noreferrer">
439kartar.net</a> دارم که تعدادی مطلب‌های بلاگ و برخی مقالات مورد علاقه من آن‌جا وجود دارد.</div>
440<h3 class="question-text">جیمز، از اینکه به مصاحبه آمدید، تشکر می‌کنم.</h3>
441<div class="paragraph">خیلی ممنون که دعوتم کردید، خیلی خوش گذشت.</div>
442<div></div>
443<div style="padding-bottom:20px; padding-top:10px;" class="hupso-share-buttons"><!-- Hupso Share Buttons - https://www.hupso.com/share/ --><a class="hupso_toolbar" href="https://www.hupso.com/share/"><img decoding="async" src="http://static.hupso.com/share/buttons/share-medium.png" style="border:0px; padding-top: 5px; float:right;" alt="Share Button"/></a>
443<script type="text/javascript">var hupso_services_t=new Array("Twitter","Facebook","Google Plus","Pinterest","Linkedin","StumbleUpon","Reddit","Bebo","Delicious");var hupso_background_t="#EAF4FF";var hupso_border_t="#66CCFF";var hupso_toolbar_size_t="medium";var hupso_image_folder_url = "";var hupso_url_t="";var hupso_title_t="%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87%20%DA%86%D8%A7%D8%B1%D9%84%D8%B2%20%D8%A7%D9%86%D8%AF%D8%B1%D8%B3%D9%88%D9%86%20%D8%A8%D8%A7%20%D8%AC%DB%8C%D9%85%D8%B2%20%D8%AA%D8%B1%D9%86%D8%A8%D9%84%20%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87%20%D8%AF%D8%A7%DA%A9%D8%B1%20-%20Docker";</script>
443<script type="text/javascript" src="http://static.hupso.com/share/js/share_toolbar.js"></script>
443<!-- Hupso Share Buttons --></div>
444<div class="wp_rp_wrap  wp_rp_modern" id="wp_rp_first"><div class="wp_rp_content"><h3 class="related_post_title">مطالب مرتبط</h3><ul class="related_post wp_rp"><li data-position="0" data-poid="in-326" data-post-type="none" ><a href="http://hidevops.com/326/%d8%af%d9%88%d8%a2%d9%be%d8%b3-%d8%aa%d8%b5%d9%88%d8%b1%d8%a7%d8%aa-%d8%a7%d8%b4%d8%aa%d8%a8%d8%a7%d9%87-devops/" class="wp_rp_thumbnail"><img decoding="async" src="http://hidevops.com/wp-content/uploads/2017/06/MiUndrestanding-1-150x150.jpg" alt="دوآپس و تصورات اشتباه درباره DevOps" width="150" height="150" /></a><a href="http://hidevops.com/326/%d8%af%d9%88%d8%a2%d9%be%d8%b3-%d8%aa%d8%b5%d9%88%d8%b1%d8%a7%d8%aa-%d8%a7%d8%b4%d8%aa%d8%a8%d8%a7%d9%87-devops/" class="wp_rp_title">دوآپس و تصورات اشتباه درباره DevOps</a></li><li data-position="1" data-poid="in-244" data-post-type="none" ><a href="http://hidevops.com/244/%da%86%d8%a7%d8%b1%da%86%d9%88%d8%a8-calms-devops-%da%86%db%8c%d8%b3%d8%aa-%da%86%d9%87-%da%a9%d9%85%da%a9%db%8c-%d9%85%db%8c%da%a9%d9%86%d8%af/" class="wp_rp_thumbnail"><img loading="lazy" decoding="async" src="http://hidevops.com/wp-content/uploads/2017/10/Keep-CALMS-and-do-DevOps-4-150x150.png" alt="چارچوب CALMS در DevOps چیست و چه کمکی می کند؟" width="150" height="150" /></a><a href="http://hidevops.com/244/%da%86%d8%a7%d8%b1%da%86%d9%88%d8%a8-calms-devops-%da%86%db%8c%d8%b3%d8%aa-%da%86%d9%87-%da%a9%d9%85%da%a9%db%8c-%d9%85%db%8c%da%a9%d9%86%d8%af/" class="wp_rp_title">چارچوب CALMS در DevOps چیست و چه کمکی می کند؟</a></li><li data-position="2" data-poid="in-538" data-post-type="none" ><a href="http://hidevops.com/538/%d8%a7%d8%b3%d8%aa%d8%b1%d8%a7%d8%aa%da%98%db%8c-%d8%a7%d8%b3%d8%aa%d9%82%d8%b1%d8%a7%d8%b1-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-software-deployment-strategy/" class="wp_rp_thumbnail"><img loading="lazy" decoding="async" src="http://hidevops.com/wp-content/uploads/2017/07/software-deployment-strategy-600x351-150x150.jpg" alt="استراتژی استقرار نرم افزار | Software Deployment Strategy" width="150" height="150" /></a><a href="http://hidevops.com/538/%d8%a7%d8%b3%d8%aa%d8%b1%d8%a7%d8%aa%da%98%db%8c-%d8%a7%d8%b3%d8%aa%d9%82%d8%b1%d8%a7%d8%b1-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-software-deployment-strategy/" class="wp_rp_title">استراتژی استقرار نرم افزار | Software Deployment Strategy</a></li><li data-position="3" data-poid="in-1728" data-post-type="none" ><a href="http://hidevops.com/1728/%d8%aa%d8%a7%d8%b1%db%8c%d8%ae%da%86%d9%87-%d9%88-%d8%af%d8%a7%d8%b3%d8%aa%d8%a7%d9%86-%d8%af%d9%88%d8%a2%d9%be%d8%b3-devops-story-history/" class="wp_rp_thumbnail"><img loading="lazy" decoding="async" src="http://hidevops.com/wp-content/uploads/2018/10/Devops-Timeline-Big-150x150.jpg" alt="تاریخچه و داستان دوآپس | DevOps Story and History" width="150" height="150" /></a><a href="http://hidevops.com/1728/%d8%aa%d8%a7%d8%b1%db%8c%d8%ae%da%86%d9%87-%d9%88-%d8%af%d8%a7%d8%b3%d8%aa%d8%a7%d9%86-%d8%af%d9%88%d8%a2%d9%be%d8%b3-devops-story-history/" class="wp_rp_title">تاریخچه و داستان دوآپس | DevOps Story and History</a></li></ul></div></div>
445	</div><!-- .entry-content -->
446
447	<footer class="entry-footer"><span class="cat-tags-links"><span class="cat-links"><svg class="icon icon-folder-open" aria-hidden="true" role="img"> <use href="#icon-folder-open" xlink:href="#icon-folder-open"></use> </svg><span class="screen-reader-text">دسته‌ها</span><a href="http://hidevops.com/category/devops/" rel="category tag">DevOps</a>، <a href="http://hidevops.com/category/docker/" rel="category tag">Docker</a>، <a href="http://hidevops.com/category/%d8%af%d8%a7%da%a9%d8%b1/" rel="category tag">داکر</a></span><span class="tags-links"><svg class="icon icon-hashtag" aria-hidden="true" role="img"> <use href="#icon-hashtag" xlink:href="#icon-hashtag"></use> </svg><span class="screen-reader-text">برچسب‌ها</span><a href="http://hidevops.com/tag/container/" rel="tag">#Container</a>، <a href="http://hidevops.com/tag/containerization/" rel="tag">#Containerization</a>، <a href="http://hidevops.com/tag/continuousintegration/" rel="tag">#ContinuousIntegration</a>، <a href="http://hidevops.com/tag/dockerfile/" rel="tag">#DockerFile</a>، <a href="http://hidevops.com/tag/dockerhub/" rel="tag">#DockerHub</a>، <a href="http://hidevops.com/tag/dockerimage/" rel="tag">#DockerImage</a>، <a href="http://hidevops.com/tag/hardening/" rel="tag">#Hardening</a>، <a href="http://hidevops.com/tag/hidevops/" rel="tag">#hiDevOps</a>، <a href="http://hidevops.com/tag/hypervisor/" rel="tag">#Hypervisor</a>، <a href="http://hidevops.com/tag/iaas/" rel="tag">#IaaS</a>
447، <a href="http://hidevops.com/tag/immutableinfrastructure/" rel="tag">#ImmutableInfrastructure</a>، <a href="http://hidevops.com/tag/logstash/" rel="tag">#Logstash</a>، <a href="http://hidevops.com/tag/microservice/" rel="tag">#MicroService</a>، <a href="http://hidevops.com/tag/openstack/" rel="tag">#OpenStack</a>، <a href="http://hidevops.com/tag/paas/" rel="tag">#PaaS</a>، <a href="http://hidevops.com/tag/provisioning/" rel="tag">#Provisioning</a>، <a href="http://hidevops.com/tag/puppetlabs/" rel="tag">#PuppetLabs</a>، <a href="http://hidevops.com/tag/salt/" rel="tag">#Salt</a>، <a href="http://hidevops.com/tag/soa/" rel="tag">#SOA</a>، <a href="http://hidevops.com/tag/venmo/" rel="tag">#Venmo</a>، <a href="http://hidevops.com/tag/virtualization/" rel="tag">#Virtualization</a>، <a href="http://hidevops.com/tag/virtualmachine/" rel="tag">#VirtualMachine</a>، <a href="http://hidevops.com/tag/vm/" rel="tag">#VM</a>، <a href="http://hidevops.com/tag/%d8%af%d8%a7%da%a9%d8%b1/" rel="tag">#داکر</a>، <a href="http://hidevops.com/tag/%d8%af%d9%88%d8%a2%d9%be%d8%b3/" rel="tag">#دوآپس</a>، <a href="http://hidevops.com/tag/%da%a9%d8%a7%d9%86%d8%aa%db%8c%d9%86%d8%b1/" rel="tag">#کانتینر</a>، <a href="http://hidevops.com/tag/%d9%85%d8%a7%d8%b4%db%8c%d9%86_%d9%85%d8%ac%d8%a7%d8%b2%db%8c/" rel="tag">#ماشین_مجازی</a>، <a href="http://hidevops.com/tag/%d9%85%d8%ac%d8%a7%d8%b2%db%8c_%d8%b3%d8%a7%d8%b2%db%8c/" rel="tag">#مجازی_سازی</a>، <a href="http://hidevops.com/tag/%d9%85%d8%ad%d9%81%d8%b8%d9%87/" rel="tag">#محفظه</a>، <a href="http://hidevops.com/tag/%d9%85%d8%af%db%8c%d8%b1_%d8%b3%db%8c%d8%b3%d8%aa%d9%85/" rel="tag">#مدیر_سیستم</a>، <a href="http://hidevops.com/tag/%d9%85%d8%b9%d9%85%d8%a7%d8%b1%db%8c_%d8%b3%d8%b1%d9%88%db%8c%d8%b3_%da%af%d8%b1%d8%a7/" rel="tag">#معماری_سرویس_گرا</a>، <a href="http://hidevops.com/tag/%d9%87%d8%a7%d8%b1%d8%af%d9%86%db%8c%d9%86%da%af/" rel="tag">#هاردنینگ</a>، <a href="http://hidevops.com/tag/agile/" rel="tag">Agile</a>، <a href="http://hidevops.com/tag/ansible/" rel="tag">Ansible</a>، <a href="http://hidevops.com/tag/chef/" rel="tag">Chef</a>، <a href="http://hidevops.com/tag/ci/" rel="tag">CI</a>، <a href="http://hidevops.com/tag/development/" rel="tag">Development</a>، <a href="http://hidevops.com/tag/devops/" rel="tag">DevOps</a>، <a href="http://hidevops.com/tag/docker/" rel="tag">Docker</a>، <a href="http://hidevops.com/tag/puppet/" rel="tag">Puppet</a>، <a href="http://hidevops.com/tag/sysadmin/" rel="tag">SysAdmin</a>، <a href="http://hidevops.com/tag/%da%86%d8%a7%d8%a8%da%a9/" rel="tag">چابک</a>، <a href="http://hidevops.com/tag/%d9%85%db%8c%da%a9%d8%b1%d9%88%d8%b3%d8%b1%d9%88%db%8c%d8%b3/" rel="tag">میکروسرویس</a>، <a href="http://hidevops.com/tag/%db%8c%d8%ab%d8%b1%d8%ae%d8%ad%d8%b3/" rel="tag">یثرخحس</a></span></span></footer> <!-- .entry-footer -->
448</article><!-- #post-1644 -->
449
450<div id="comments" class="comments-area">
451
452		<div id="respond" class="comment-respond">
453		<h3 id="reply-title" class="comment-reply-title">دیدگاهتان را بنویسید <small><a rel="nofollow" id="cancel-comment-reply-link" href="/1644/%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D8%A8%D8%A7-%D8%AC%DB%8C%D9%85%D8%B2-%D8%AA%D8%B1%D9%86%D8%A8%D9%84-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%AF%D8%A7%DA%A9%D8%B1-docker/#respond" style="display:none;">لغو پاسخ</a></small></h3><form action="http://hidevops.com/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">نشانی ایمیل شما منتشر نخواهد شد.</span> <span class="required-field-message">بخش‌های موردنیاز علامت‌گذاری شده‌اند <span class="required">*</span></span></p><p class="comment-form-comment"><label for="comment">دیدگاه <span class="required">*</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required></textarea></p><p class="comment-form-author"><label for="author">نام <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p>
454<p class="comment-form-email"><label for="email">ایمیل <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p>
455<p class="comment-form-url"><label for="url">وب‌ سایت</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p>
456<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی می‌نویسم.</label></p>
457<p class="aiowps-captcha hide-when-displaying-tfa-input"><label for="aiowps-captcha-answer">لطفا یک پاسخ را با ارقام وارد کنید:</label><div class="aiowps-captcha-equation hide-when-displaying-tfa-input"><strong>14 &#8722; 1 = <input type="hidden" name="aiowps-captcha-string-info" class="aiowps-captcha-string-info" value="9f65e2smh1" /><input type="hidden" name="aiowps-captcha-temp-string" class="aiowps-captcha-temp-string" value="1790994839" /><input type="text" size="2" class="aiowps-captcha-answer" name="aiowps-captcha-answer" value="" autocomplete="off" /></strong></div></p><p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="فرستادن دیدگاه" /> <input type='hidden' name='comment_post_ID' value='1644' id='comment_post_ID' />
458<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
459</p> <p class="comment-form-aios-antibot-keys"><input type="hidden" name="f1rrz3bj" value="xgogzkfz150i" ><input type="hidden" name="lm5b5wkv" value="pt3pcwexkr8h" ><input type="hidden" name="aios_antibot_keys_expiry" id="aios_antibot_keys_expiry" value="1791417600"></p></form>	</div><!-- #respond -->
460	
461</div><!-- #comments -->
462
463	<nav class="navigation post-navigation" aria-label="نوشته‌ها">
464		<h2 class="screen-reader-text">راهبری نوشته</h2>
465		<div class="nav-links"><div class="nav-previous"><a href="http://hidevops.com/1728/%d8%aa%d8%a7%d8%b1%db%8c%d8%ae%da%86%d9%87-%d9%88-%d8%af%d8%a7%d8%b3%d8%aa%d8%a7%d9%86-%d8%af%d9%88%d8%a2%d9%be%d8%b3-devops-story-history/" rel="prev"><span class="screen-reader-text">نوشته قبلی</span><span aria-hidden="true" class="nav-subtitle">پیشین</span> <span class="nav-title"><span class="nav-title-icon-wrapper"><svg class="icon icon-arrow-left" aria-hidden="true" role="img">
465 <use href="#icon-arrow-left" xlink:href="#icon-arrow-left"></use> </svg></span>تاریخچه و داستان دوآپس | DevOps Story and History</span></a></div><div class="nav-next"><a href="http://hidevops.com/2204/docs/" rel="next"><span class="screen-reader-text">نوشته‌ٔ بعدی</span><span aria-hidden="true" class="nav-subtitle">پسین</span> <span class="nav-title">docs<span class="nav-title-icon-wrapper"><svg class="icon icon-arrow-right" aria-hidden="true" role="img"> <use href="#icon-arrow-right" xlink:href="#icon-arrow-right"></use> </svg></span></span></a></div></div>
466	</nav>
467		</main><!-- #main -->
468	</div><!-- #primary -->
469	
470<aside id="secondary" class="widget-area" aria-label="نوار کناری بلاگ">
471	<section id="search-3" class="widget widget_search"><h2 class="widget-title">جستجو</h2>
472
473<form role="search" method="get" class="search-form" action="http://hidevops.com/">
474	<label for="search-form-1">
475		<span class="screen-reader-text">جستجو برای </span>
476	</label>
477	<input type="search" id="search-form-1" class="search-field" placeholder="جستجو &hellip;" value="" name="s" />
478	<button type="submit" class="search-submit"><svg class="icon icon-search" aria-hidden="true" role="img"> <use href="#icon-search" xlink:href="#icon-search"></use> </svg><span class="screen-reader-text">جستجو</span></button>
479</form>
480</section><section id="text-7" class="widget widget_text"><h2 class="widget-title">درباره این سایت</h2>			<div class="textwidget"><p style="direction: rtl;">اینجا مکانی است برای یادگیری، آموزش، تبادل نظر و شناسایی افراد مرتبط در حوزه DevOps و مطالب مرتبط با آن از جمله ALM، Agile، Lean و &#8230;</p>
481</div>
482		</section><section id="zoom-social-icons-widget-2" class="widget zoom-social-icons-widget"><h2 class="widget-title">Follow us</h2>
483		
484<p class="">کانال تلگرام</p>
485
486		
487<ul class="zoom-social-icons-list zoom-social-icons-list--with-canvas zoom-social-icons-list--round zoom-social-icons-list--no-labels">
488
489		
490				<li class="zoom-social_icons-list__item">
491		<a class="zoom-social_icons-list__link" href="https://t.me/HiDevOps" target="_blank" title="" >
492									
493						<span class="screen-reader-text">telegram</span>
494			
495						<span class="zoom-social_icons-list-span social-icon socicon socicon-telegram" data-hover-rule="background-color" data-hover-color="#e51e1e" style="background-color : #bf0013; font-size: 18px; padding:8px" ></span>
496			
497					</a>
498	</li>
499
500	
501				<li class="zoom-social_icons-list__item">
502		<a class="zoom-social_icons-list__link" href="https://twitter.com/HiDevOpsCom" target="_blank" title="Default Label" >
503									
504						<span class="screen-reader-text">twitter</span>
505			
506						<span class="zoom-social_icons-list-span social-icon fa fa-twitter" data-hover-rule="background-color" data-hover-color="#e51e1e" style="background-color : #bf0013; font-size: 18px; padding:8px" ></span>
507			
508					</a>
509	</li>
510
511	
512				<li class="zoom-social_icons-list__item">
513		<a class="zoom-social_icons-list__link" href="https://www.instagram.com/HiDevOpsCom" target="_blank" title="Default Label" >
514									
515						<span class="screen-reader-text">instagram</span>
516			
517						<span class="zoom-social_icons-list-span social-icon socicon socicon-instagram" data-hover-rule="background-color" data-hover-color="#e51e1e" style="background-color : #bf0013; font-size: 18px; padding:8px" ></span>
518			
519					</a>
520	</li>
521
522	
523				<li class="zoom-social_icons-list__item">
524		<a class="zoom-social_icons-list__link" href="http://www.linkedin.com/in/OmidShariati" target="_blank" title="Default Label" >
525									
526						<span class="screen-reader-text">linkedin-square</span>
527			
528						<span class="zoom-social_icons-list-span social-icon fa fa-linkedin-square" data-hover-rule="background-color" data-hover-color="#e51e1e" style="background-color : #bf0013; font-size: 18px; padding:8px" ></span>
529			
530					</a>
531	</li>
532
533	
534</ul>
535
536		</section>
537		<section id="recent-posts-3" class="widget widget_recent_entries">
538		<h2 class="widget-title">نوشته‌های تازه</h2><nav aria-label="نوشته‌های تازه">
539		<ul>
540											<li>
541					<a href="http://hidevops.com/2273/%d8%a8%d8%b2%d8%b1%da%af%d8%aa%d8%b1%db%8c%d9%86-%da%af%d8%b2%d8%a7%d8%b1%d8%b4-%d8%ad%d9%82%d9%88%d9%82-%d9%88-%d8%af%d8%b3%d8%aa%d9%85%d8%b2%d8%af-%d9%85%d9%87%d9%86%d8%af%d8%b3%d8%a7%d9%86-%da%a9/">گزارش حقوق و دستمزد مهندسان کامپیوتر و فناوری اطلاعات ایران &#8211; سال 1404</a>
542									</li>
543											<li>
544					<a href="http://hidevops.com/2227/consume-nuget-feeds-6/">Consume Nuget Feeds</a>
545									</li>
546											<li>
547					<a href="http://hidevops.com/2226/image-3/">image</a>
548									</li>
549											<li>
550					<a href="http://hidevops.com/2225/readme/">README</a>
551									</li>
552											<li>
553					<a href="http://hidevops.com/2207/help/">help</a>
554									</li>
555					</ul>
556
557		</nav></section><section id="categories-5" class="widget widget_categories"><h2 class="widget-title">موضوعات</h2><nav aria-label="موضوعات">
558			<ul>
559					<li class="cat-item cat-item-373"><a href="http://hidevops.com/category/alm/">ALM</a>
560</li>
561	<li class="cat-item cat-item-42"><a href="http://hidevops.com/category/continuous-delivery/">Continuous Delivery</a>
562</li>
563	<li class="cat-item cat-item-31"><a href="http://hidevops.com/category/continuous-integration/">Continuous Integration</a>
564</li>
565	<li class="cat-item cat-item-4"><a href="http://hidevops.com/category/devops/">DevOps</a>
566</li>
567	<li class="cat-item cat-item-488"><a href="http://hidevops.com/category/docker/">Docker</a>
568</li>
569	<li class="cat-item cat-item-243"><a href="http://hidevops.com/category/itil/">ITIL</a>
570</li>
571	<li class="cat-item cat-item-66"><a href="http://hidevops.com/category/software-deployment/">Software Deployment</a>
572</li>
573	<li class="cat-item cat-item-126"><a href="http://hidevops.com/category/%d8%a7%d8%b3%d8%aa%d9%82%d8%b1%d8%a7%d8%b1-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1/">استقرار نرم افزار</a>
574</li>
575	<li class="cat-item cat-item-487"><a href="http://hidevops.com/category/%d8%af%d8%a7%da%a9%d8%b1/">داکر</a>
576</li>
577	<li class="cat-item cat-item-1"><a href="http://hidevops.com/category/%d8%af%d8%b3%d8%aa%d9%87%e2%80%8c%d8%a8%d9%86%d8%af%db%8c-%d9%86%d8%b4%d8%af%d9%87/">دسته‌بندی نشده</a>
578</li>
579	<li class="cat-item cat-item-68"><a href="http://hidevops.com/category/%d8%af%d9%88%d8%a2%d9%be%d8%b3/">دوآپس</a>
580</li>
581			</ul>
582
583			</nav></section><section id="tag_cloud-4" class="widget widget_tag_cloud"><h2 class="widget-title">برچسب ها</h2><nav aria-label="برچسب ها"><div class="tagcloud"><ul class='wp-tag-cloud' role='list'>
584	<li><a href="http://hidevops.com/tag/ab-deployment/" class="tag-cloud-link tag-link-155 tag-link-position-1" style="font-size: 1em;">A/B Deployment</a></li>
585	<li><a href="http://hidevops.com/tag/agile/" class="tag-cloud-link tag-link-8 tag-link-position-2" style="font-size: 1em;">Agile</a></li>
586	<li><a href="http://hidevops.com/tag/ansible/" class="tag-cloud-link tag-link-80 tag-link-position-3" style="font-size: 1em;">Ansible</a></li>
587	<li><a href="http://hidevops.com/tag/automation/" class="tag-cloud-link tag-link-71 tag-link-position-4" style="font-size: 1em;">Automation</a></li>
588	<li><a href="http://hidevops.com/tag/blue-green-deployment/" class="tag-cloud-link tag-link-53 tag-link-position-5" style="font-size: 1em;">Blue-Green Deployment</a></li>
589	<li><a href="http://hidevops.com/tag/blue-green-strategy/" class="tag-cloud-link tag-link-150 tag-link-position-6" style="font-size: 1em;">Blue-Green Strategy</a></li>
590	<li><a href="http://hidevops.com/tag/business/" class="tag-cloud-link tag-link-255 tag-link-position-7" style="font-size: 1em;">Business</a></li>
591	<li><a href="http://hidevops.com/tag/canary-deployment/" class="tag-cloud-link tag-link-151 tag-link-position-8" style="font-size: 1em;">Canary Deployment</a></li>
592	<li><a href="http://hidevops.com/tag/canary-strategy/" class="tag-cloud-link tag-link-152 tag-link-position-9" style="font-size: 1em;">Canary Strategy</a></li>
593	<li><a href="http://hidevops.com/tag/cd/" class="tag-cloud-link tag-link-7 tag-link-position-10" style="font-size: 1em;">CD</a></li>
594	<li><a href="http://hidevops.com/tag/chef/" class="tag-cloud-link tag-link-143 tag-link-position-11" style="font-size: 1em;">Chef</a></li>
595	<li><a href="http://hidevops.com/tag/ci/" class="tag-cloud-link tag-link-6 tag-link-position-12" style="font-size: 1em;">CI</a></li>
596	<li><a href="http://hidevops.com/tag/continuous-delivery/" class="tag-cloud-link tag-link-11 tag-link-position-13" style="font-size: 1em;">Continuous Delivery</a></li>
597	<li><a href="http://hidevops.com/tag/continuous-deployment/" class="tag-cloud-link tag-link-169 tag-link-position-14" style="font-size: 1em;">Continuous Deployment</a></li>
598	<li><a href="http://hidevops.com/tag/continuous-integration/" class="tag-cloud-link tag-link-20 tag-link-position-15" style="font-size: 1em;">Continuous Integration</a></li>
599	<li><a href="http://hidevops.com/tag/culture/" class="tag-cloud-link tag-link-74 tag-link-position-16" style="font-size: 1em;">Culture</a></li>
600	<li><a href="http://hidevops.com/tag/dark-launch-deployment/" class="tag-cloud-link tag-link-153 tag-link-position-17" style="font-size: 1em;">
600Dark Launch Deployment</a></li>
601	<li><a href="http://hidevops.com/tag/dark-launch-strategy/" class="tag-cloud-link tag-link-154 tag-link-position-18" style="font-size: 1em;">Dark Launch Strategy</a></li>
602	<li><a href="http://hidevops.com/tag/devops/" class="tag-cloud-link tag-link-5 tag-link-position-19" style="font-size: 1em;">DevOps</a></li>
603	<li><a href="http://hidevops.com/tag/lean/" class="tag-cloud-link tag-link-95 tag-link-position-20" style="font-size: 1em;">Lean</a></li>
604	<li><a href="http://hidevops.com/tag/puppet/" class="tag-cloud-link tag-link-144 tag-link-position-21" style="font-size: 1em;">Puppet</a></li>
605	<li><a href="http://hidevops.com/tag/risk/" class="tag-cloud-link tag-link-135 tag-link-position-22" style="font-size: 1em;">Risk</a></li>
606	<li><a href="http://hidevops.com/tag/software-delivery/" class="tag-cloud-link tag-link-43 tag-link-position-23" style="font-size: 1em;">Software Delivery</a></li>
607	<li><a href="http://hidevops.com/tag/software-deployment/" class="tag-cloud-link tag-link-40 tag-link-position-24" style="font-size: 1em;">Software Deployment</a></li>
608	<li><a href="http://hidevops.com/tag/%d8%a7%d8%aa%d9%88%d9%85%d8%a7%d8%b3%db%8c%d9%88%d9%86/" class="tag-cloud-link tag-link-213 tag-link-position-25" style="font-size: 1em;">اتوماسیون</a></li>
609	<li><a href="http://hidevops.com/tag/%d8%a7%d8%af%d8%ba%d8%a7%d9%85-%d9%85%d8%af%d8%a7%d9%88%d9%85/" class="tag-cloud-link tag-link-32 tag-link-position-26" style="font-size: 1em;">ادغام مداوم</a></li>
610	<li><a href="http://hidevops.com/tag/%d8%a7%d8%af%d8%ba%d8%a7%d9%85-%d9%85%d8%b3%d8%aa%d9%85%d8%b1/" class="tag-cloud-link tag-link-172 tag-link-position-27" style="font-size: 1em;">ادغام مستمر</a></li>
611	<li><a href="http://hidevops.com/tag/%d8%a7%d8%b3%d8%aa%d9%82%d8%b1%d8%a7%d8%b1/" class="tag-cloud-link tag-link-158 tag-link-position-28" style="font-size: 1em;">استقرار</a></li>
612	<li><a href="http://hidevops.com/tag/%d8%a7%d8%b3%d8%aa%d9%82%d8%b1%d8%a7%d8%b1-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1/" class="tag-cloud-link tag-link-160 tag-link-position-29" style="font-size: 1em;">استقرار نرم افزار</a></li>
613	<li><a href="http://hidevops.com/tag/%d8%aa%d8%ad%d9%88%db%8c%d9%84-%d9%85%d8%af%d8%a7%d9%88%d9%85/" class="tag-cloud-link tag-link-19 tag-link-position-30" style="font-size: 1em;">تحویل مداوم</a></li>
614	<li><a href="http://hidevops.com/tag/%d8%aa%d8%ad%d9%88%db%8c%d9%84-%d9%85%d8%b3%d8%aa%d9%85%d8%b1/" class="tag-cloud-link tag-link-171 tag-link-position-31" style="font-size: 1em;">تحویل مستمر</a></li>
615	<li><a href="http://hidevops.com/tag/%d8%aa%d8%b6%d9%85%db%8c%d9%86-%da%a9%db%8c%d9%81%db%8c%d8%aa/" class="tag-cloud-link tag-link-224 tag-link-position-32" style="font-size: 1em;">تضمین کیفیت</a></li>
616	<li><a href="http://hidevops.com/tag/%d8%aa%d9%81%da%a9%d8%b1-%d9%86%d8%a7%d8%a8/" class="tag-cloud-link tag-link-123 tag-link-position-33" style="font-size: 1em;">تفکر ناب</a></li>
617	<li><a href="http://hidevops.com/tag/%d8%af%d9%88%d8%a7%d9%88%d9%be%d8%b3/" class="tag-cloud-link tag-link-67 tag-link-position-34" style="font-size: 1em;">دواوپس</a></li>
618	<li><a href="http://hidevops.com/tag/%d8%af%d9%88%d8%a7%d9%be%d8%b3/" class="tag-cloud-link tag-link-65 tag-link-position-35" style="font-size: 1em;">دواپس</a></li>
619	<li><a href="http://hidevops.com/tag/%d8%af%d9%90%d9%88%d8%a2%d9%be%d8%b3/" class="tag-cloud-link tag-link-18 tag-link-position-36" style="font-size: 1em;">دِوآپس</a></li>
620	<li><a href="http://hidevops.com/tag/%d8%b1%db%8c%d8%b3%da%a9/" class="tag-cloud-link tag-link-163 tag-link-position-37" style="font-size: 1em;">ریسک</a></li>
621	<li><a href="http://hidevops.com/tag/%d8%b3%d8%b1%d8%b9%d8%aa/" class="tag-cloud-link tag-link-266 tag-link-position-38" style="font-size: 1em;">سرعت</a></li>
622	<li><a href="http://hidevops.com/tag/%d9%81%d8%b1%d9%87%d9%86%da%af/" class="tag-cloud-link tag-link-106 tag-link-position-39" style="font-size: 1em;">فرهنگ</a></li>
623	<li><a href="http://hidevops.com/tag/%d9%85%db%8c%da%a9%d8%b1%d9%88%d8%b3%d8%b1%d9%88%db%8c%d8%b3/" class="tag-cloud-link tag-link-280 tag-link-position-40" style="font-size: 1em;">میکروسرویس</a></li>
624	<li><a href="http://hidevops.com/tag/%d9%86%d8%a7%d8%a8/" class="tag-cloud-link tag-link-215 tag-link-position-41" style="font-size: 1em;">ناب</a></li>
625	<li><a href="http://hidevops.com/tag/%d9%87%d9%85%da%a9%d8%a7%d8%b1%db%8c/" class="tag-cloud-link tag-link-122 tag-link-position-42" style="font-size: 1em;">همکاری</a></li>
626	<li><a href="http://hidevops.com/tag/%da%86%d8%a7%d8%a8%da%a9/" class="tag-cloud-link tag-link-102 tag-link-position-43" style="font-size: 1em;">چابک</a></li>
627	<li>
627<a href="http://hidevops.com/tag/%da%a9%db%8c%d9%81%db%8c%d8%aa/" class="tag-cloud-link tag-link-267 tag-link-position-44" style="font-size: 1em;">کیفیت</a></li>
628	<li><a href="http://hidevops.com/tag/%db%8c%d8%ab%d8%b1%d8%ae%d8%ad%d8%b3/" class="tag-cloud-link tag-link-521 tag-link-position-45" style="font-size: 1em;">یثرخحس</a></li>
629</ul>
630</div>
631</nav></section></aside><!-- #secondary -->
632</div><!-- .wrap -->
633
634
635		</div><!-- #content -->
636
637		<footer id="colophon" class="site-footer">
638			<div class="wrap">
639				
640
641	<aside class="widget-area" aria-label="پابرگ">
642					<div class="widget-column footer-widget-1">
643				<section id="text-8" class="widget widget_text"><h2 class="widget-title">تماس با ما</h2>			<div class="textwidget"><p>امید شریعتی</p>
644<p><strong>شماره تماس</strong><br />
645<span style="text-align: left; direction: ltr;">(+98) 9376410246</span></p>
646</div>
647		</section>			</div>
648						<div class="widget-column footer-widget-2">
649				<section id="text-9" class="widget widget_text"><h2 class="widget-title">درباره این سایت</h2>			<div class="textwidget"><p style="direction: rtl;">اینجا مکانی است برای یادگیری، آموزش، تبادل نظر و شناسایی افراد مرتبط در حوزه دواپس (DevOps) و مطالب مرتبط با آن از جمله ALM، روش های چابک تولید نرم افزار (Agile) و روش های ناب (Lean)،  و &#8230;</p>
650</div>
651		</section><section id="search-4" class="widget widget_search"><h2 class="widget-title">جستجو</h2>
652
653<form role="search" method="get" class="search-form" action="http://hidevops.com/">
654	<label for="search-form-2">
655		<span class="screen-reader-text">جستجو برای </span>
656	</label>
657	<input type="search" id="search-form-2" class="search-field" placeholder="جستجو &hellip;" value="" name="s" />
658	<button type="submit" class="search-submit"><svg class="icon icon-search" aria-hidden="true" role="img"> <use href="#icon-search" xlink:href="#icon-search"></use> </svg><span class="screen-reader-text">جستجو</span></button>
659</form>
660</section>			</div>
661			</aside><!-- .widget-area -->
662
663					<nav class="social-navigation" aria-label="فهرست پیوند شبکه‌های اجتماعی پابرگ">
664						<div class="menu-%d9%81%d9%87%d8%b1%d8%b3%d8%aa-%d8%b4%d8%a8%da%a9%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%d8%a7%d8%ac%d8%aa%d9%85%d8%a7%d8%b9%db%8c-container"><ul id="menu-%d9%81%d9%87%d8%b1%d8%b3%d8%aa-%d8%b4%d8%a8%da%a9%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%d8%a7%d8%ac%d8%aa%d9%85%d8%a7%d8%b9%db%8c" class="social-links-menu"><li id="menu-item-65" class="icon-telegram menu-item menu-item-type-custom menu-item-object-custom menu-item-65"><a target="_blank" href="http://www.linkedin.com/in/OmidShariati"><span class="screen-reader-text">لینکدین</span><svg class="icon icon-linkedin" aria-hidden="true" role="img"> <use href="#icon-linkedin" xlink:href="#icon-linkedin"></use> </svg></a></li>
665<li id="menu-item-785" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-785"><a href="https://plus.google.com/communities/102961414525138301224"><span class="screen-reader-text">google+</span><svg class="icon icon-google-plus" aria-hidden="true" role="img"> <use href="#icon-google-plus" xlink:href="#icon-google-plus"></use> </svg></a></li>
666<li id="menu-item-409" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-409"><a target="_blank" href="https://t.me/HiDevOps"><span class="screen-reader-text">کانال تلگرام hiDevOps</span><svg class="icon icon-telegram" aria-hidden="true" role="img"> <use href="#icon-telegram" xlink:href="#icon-telegram"></use> </svg></a></li>
667<li id="menu-item-786" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-786"><a href="https://www.facebook.com/HiDevOpsCom/"><span class="screen-reader-text">Facebook Page</span><svg class="icon icon-facebook" aria-hidden="true" role="img"> <use href="#icon-facebook" xlink:href="#icon-facebook"></use> </svg></a></li>
668<li id="menu-item-1589" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1589"><a href="https://www.instagram.com/HiDevOpsCom"><span class="screen-reader-text">Instagram</span><svg class="icon icon-instagram" aria-hidden="true" role="img"> <use href="#icon-instagram" xlink:href="#icon-instagram"></use> </svg></a></li>
669<li id="menu-item-1590" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1590"><a href="https://twitter.com/HiDevOpsCom"><span class="screen-reader-text">Twitter</span><svg class="icon icon-twitter" aria-hidden="true" role="img"> <use href="#icon-twitter" xlink:href="#icon-twitter"></use> </svg></a></li>
670</ul></div>					</nav><!-- .social-navigation -->
671					<div class="site-info">
672		<a href="https://wordpress.org/" class="imprint">
673		با افتخار، نیرو گرفته از WordPress	</a>
674</div><!-- .site-info -->
675			</div><!-- .wrap -->
676		</footer><!-- #colophon -->
677	</div><!-- .site-content-contain -->
678</div><!-- #page -->
679<div id="csbwfs-delaydiv"><div class="csbwfs-social-widget"  id="csbwfs-left" title="Share This With Your Friends"  style="top:25%;left:0;"><div class="csbwfs-show"><a href="javascript:" title="Show Buttons" id="csbwfs-show">
679<img src="http://hidevops.com/wp-content/plugins/custom-share-buttons-with-floating-sidebar/images/hide-l.png" alt="Show Buttons"></a></div><div id="csbwfs-social-inner"><div class="csbwfs-sbutton csbwfsbtns"><div id="csbwfs-fb" class="csbwfs-fb"><a href="javascript:" onclick="javascript:window.open('//www.facebook.com/sharer/sharer.php?u=http://hidevops.com/1644/%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D8%A8%D8%A7-%D8%AC%DB%8C%D9%85%D8%B2-%D8%AA%D8%B1%D9%86%D8%A8%D9%84-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%AF%D8%A7%DA%A9%D8%B1-docker/', '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;" target="_blank" title="Share On Facebook" ><i class="csbwfs_facebook"></i></a></div></div><div class="csbwfs-sbutton csbwfsbtns"><div id="csbwfs-tw" class="csbwfs-tw"><a href="javascript:" onclick="window.open('//twitter.com/share?url=http://hidevops.com/1644/%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D8%A8%D8%A7-%D8%AC%DB%8C%D9%85%D8%B2-%D8%AA%D8%B1%D9%86%D8%A8%D9%84-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%AF%D8%A7%DA%A9%D8%B1-docker/&text=%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87%20%DA%86%D8%A7%D8%B1%D9%84%D8%B2%20%D8%A7%D9%86%D8%AF%D8%B1%D8%B3%D9%88%D9%86%20%D8%A8%D8%A7%20%D8%AC%DB%8C%D9%85%D8%B2%20%D8%AA%D8%B1%D9%86%D8%A8%D9%84%20%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87%20%D8%AF%D8%A7%DA%A9%D8%B1%20-%20Docker%20-%20%D8%B3%D9%84%D8%A7%D9%85%20%D8%AF%D9%88%D8%A7%D9%BE%D8%B3%20%7C%20Hi%20DevOps','_blank','width=800,height=300')" title="Share On Twitter" ><i class="csbwfs_twitter"></i></a></div></div><div class="csbwfs-sbutton csbwfsbtns"><div id="csbwfs-li" class="csbwfs-li"><a href="javascript:" onclick="javascript:window.open('//www.linkedin.com/cws/share?mini=true&url=http://hidevops.com/1644/%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D8%A8%D8%A7-%D8%AC%DB%8C%D9%85%D8%B2-%D8%AA%D8%B1%D9%86%D8%A8%D9%84-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%AF%D8%A7%DA%A9%D8%B1-docker/','','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=800');return false;" title="Share On Linkedin" ><i class="csbwfs_linkedin"></i></a></div></div></div><div class="csbwfs-hide"><a href="javascript:" title="Hide Buttons" id="csbwfs-hide"><img src="http://hidevops.com/wp-content/plugins/custom-share-buttons-with-floating-sidebar/images/hide.png" alt="Hide Buttons"></a></div></div></div>
679<script id="twentyseventeen-skip-link-focus-fix-js-extra">
680var twentyseventeenScreenReaderText = {"quote":"<svg class=\"icon icon-quote-right\" aria-hidden=\"true\" role=\"img\"> <use href=\"#icon-quote-right\" xlink:href=\"#icon-quote-right\"><\/use> <\/svg>","expand":"\u0628\u0627\u0632\u06a9\u0631\u062f\u0646 \u0632\u06cc\u0631\u0641\u0647\u0631\u0633\u062a","collapse":"\u0628\u0633\u062a\u0646 \u0632\u06cc\u0631\u0641\u0647\u0631\u0633\u062a","icon":"<svg class=\"icon icon-angle-down\" aria-hidden=\"true\" role=\"img\"> <use href=\"#icon-angle-down\" xlink:href=\"#icon-angle-down\"><\/use> <span class=\"svg-fallback icon-angle-down\"><\/span><\/svg>"};
681</script>
vendor: 1 bytes, line 681
681
682<script src="http://hidevops.com/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js?ver=20161114" id="twentyseventeen-skip-link-focus-fix-js"></script>
vendor: 1 bytes, line 682
682
683<script src="http://hidevops.com/wp-content/themes/twentyseventeen/assets/js/navigation.js?ver=20161203" id="twentyseventeen-navigation-js"></script>
vendor: 1 bytes, line 683
683
684<script src="http://hidevops.com/wp-content/themes/twentyseventeen/assets/js/global.js?ver=20190121" id="twentyseventeen-global-js"></script>
vendor: 1 bytes, line 684
684
685<script src="http://hidevops.com/wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js?ver=2.1.2" id="jquery-scrollto-js"></script>
vendor: 1 bytes, line 685
685
686<script src="http://hidevops.com/wp-includes/js/comment-reply.min.js?ver=6.7.9" id="comment-reply-js" async data-wp-strategy="async"></script>
vendor: 1 bytes, line 686
686
687<script src="http://hidevops.com/wp-content/plugins/social-icons-widget-by-wpzoom/assets/js/social-icons-widget-frontend.js?ver=1732956157" id="zoom-social-icons-widget-frontend-js"></script>
vendor: 1 bytes, line 687
687
688<script id="aios-front-js-js-extra">
689var AIOS_FRONT = {"ajaxurl":"http:\/\/hidevops.com\/wp-admin\/admin-ajax.php","ajax_nonce":"96a03d6268"};
690</script>
vendor: 1 bytes, line 690
690
691<script src="http://hidevops.com/wp-content/plugins/all-in-one-wp-security-and-firewall/js/wp-security-front-script.js?ver=5.3.4" id="aios-front-js-js"></script>
691
692<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
693<defs>
694<symbol id="icon-behance" viewBox="0 0 37 32">
695<path class="path1" d="M33 6.054h-9.125v2.214h9.125v-2.214zM28.5 13.661q-1.607 0-2.607 0.938t-1.107 2.545h7.286q-0.321-3.482-3.571-3.482zM28.786 24.107q1.125 0 2.179-0.571t1.357-1.554h3.946q-1.786 5.482-7.625 5.482-3.821 0-6.080-2.357t-2.259-6.196q0-3.714 2.33-6.17t6.009-2.455q2.464 0 4.295 1.214t2.732 3.196 0.902 4.429q0 0.304-0.036 0.839h-11.75q0 1.982 1.027 3.063t2.973 1.080zM4.946 23.214h5.286q3.661 0 3.661-2.982 0-3.214-3.554-3.214h-5.393v6.196zM4.946 13.625h5.018q1.393 0 2.205-0.652t0.813-2.027q0-2.571-3.393-2.571h-4.643v5.25zM0 4.536h10.607q1.554 0 2.768 0.25t2.259 0.848 1.607 1.723 0.563 2.75q0 3.232-3.071 4.696 2.036 0.571 3.071 2.054t1.036 3.643q0 1.339-0.438 2.438t-1.179 1.848-1.759 1.268-2.161 0.75-2.393 0.232h-10.911v-22.5z"></path>
696</symbol>
697<symbol id="icon-deviantart" viewBox="0 0 18 32">
698<path class="path1" d="M18.286 5.411l-5.411 10.393 0.429 0.554h4.982v7.411h-9.054l-0.786 0.536-2.536 4.875-0.536 0.536h-5.375v-5.411l5.411-10.411-0.429-0.536h-4.982v-7.411h9.054l0.786-0.536 2.536-4.875 0.536-0.536h5.375v5.411z"></path>
699</symbol>
700<symbol id="icon-medium" viewBox="0 0 32 32">
701<path class="path1" d="M10.661 7.518v20.946q0 0.446-0.223 0.759t-0.652 0.313q-0.304 0-0.589-0.143l-8.304-4.161q-0.375-0.179-0.634-0.598t-0.259-0.83v-20.357q0-0.357 0.179-0.607t0.518-0.25q0.25 0 0.786 0.268l9.125 4.571q0.054 0.054 0.054 0.089zM11.804 9.321l9.536 15.464-9.536-4.75v-10.714zM32 9.643v18.821q0 0.446-0.25 0.723t-0.679 0.277-0.839-0.232l-7.875-3.929zM31.946 7.5q0 0.054-4.58 7.491t-5.366 8.705l-6.964-11.321 5.786-9.411q0.304-0.5 0.929-0.5 0.25 0 0.464 0.107l9.661 4.821q0.071 0.036 0.071 0.107z"></path>
702</symbol>
703<symbol id="icon-slideshare" viewBox="0 0 32 32">
704<path class="path1" d="M15.589 13.214q0 1.482-1.134 2.545t-2.723 1.063-2.723-1.063-1.134-2.545q0-1.5 1.134-2.554t2.723-1.054 2.723 1.054 1.134 2.554zM24.554 13.214q0 1.482-1.125 2.545t-2.732 1.063q-1.589 0-2.723-1.063t-1.134-2.545q0-1.5 1.134-2.554t2.723-1.054q1.607 0 2.732 1.054t1.125 2.554zM28.571 16.429v-11.911q0-1.554-0.571-2.205t-1.982-0.652h-19.857q-1.482 0-2.009 0.607t-0.527 2.25v12.018q0.768 0.411 1.58 0.714t1.446 0.5 1.446 0.33 1.268 0.196 1.25 0.071 1.045 0.009 1.009-0.036 0.795-0.036q1.214-0.018 1.696 0.482 0.107 0.107 0.179 0.161 0.464 0.446 1.089 0.911 0.125-1.625 2.107-1.554 0.089 0 0.652 0.027t0.768 0.036 0.813 0.018 0.946-0.018 0.973-0.080 1.089-0.152 1.107-0.241 1.196-0.348 1.205-0.482 1.286-0.616zM31.482 16.339q-2.161 2.661-6.643 4.5 1.5 5.089-0.411 8.304-1.179 2.018-3.268 2.643-1.857 0.571-3.25-0.268-1.536-0.911-1.464-2.929l-0.018-5.821v-0.018q-0.143-0.036-0.438-0.107t-0.42-0.089l-0.018 6.036q0.071 2.036-1.482 2.929-1.411 0.839-3.268 0.268-2.089-0.643-3.25-2.679-1.875-3.214-0.393-8.268-4.482-1.839-6.643-4.5-0.446-0.661-0.071-1.125t1.071 0.018q0.054 0.036 0.196 0.125t0.196 0.143v-12.393q0-1.286 0.839-2.196t2.036-0.911h22.446q1.196 0 2.036 0.911t0.839 2.196v12.393l0.375-0.268q0.696-0.482 1.071-0.018t-0.071 1.125z"></path>
705</symbol>
706<symbol id="icon-snapchat-ghost" viewBox="0 0 30 32">
707<path class="path1" d="M15.143 2.286q2.393-0.018 4.295 1.223t2.92 3.438q0.482 1.036 0.482 3.196 0 0.839-0.161 3.411 0.25 0.125 0.5 0.125 0.321 0 0.911-0.241t0.911-0.241q0.518 0 1 0.321t0.482 0.821q0 0.571-0.563 0.964t-1.232 0.563-1.232 0.518-0.563 0.848q0 0.268 0.214 0.768 0.661 1.464 1.83 2.679t2.58 1.804q0.5 0.214 1.429 0.411 0.5 0.107 0.5 0.625 0 1.25-3.911 1.839-0.125 0.196-0.196 0.696t-0.25 0.83-0.589 0.33q-0.357 0-1.107-0.116t-1.143-0.116q-0.661 0-1.107 0.089-0.571 0.089-1.125 0.402t-1.036 0.679-1.036 0.723-1.357 0.598-1.768 0.241q-0.929 0-1.723-0.241t-1.339-0.598-1.027-0.723-1.036-0.679-1.107-0.402q-0.464-0.089-1.125-0.089-0.429 0-1.17 0.134t-1.045 0.134q-0.446 0-0.625-0.33t-0.25-0.848-0.196-0.714q-3.911-0.589-3.911-1.839 0-0.518 0.5-0.
707625 0.929-0.196 1.429-0.411 1.393-0.571 2.58-1.804t1.83-2.679q0.214-0.5 0.214-0.768 0-0.5-0.563-0.848t-1.241-0.527-1.241-0.563-0.563-0.938q0-0.482 0.464-0.813t0.982-0.33q0.268 0 0.857 0.232t0.946 0.232q0.321 0 0.571-0.125-0.161-2.536-0.161-3.393 0-2.179 0.482-3.214 1.143-2.446 3.071-3.536t4.714-1.125z"></path>
708</symbol>
709<symbol id="icon-yelp" viewBox="0 0 27 32">
710<path class="path1" d="M13.804 23.554v2.268q-0.018 5.214-0.107 5.446-0.214 0.571-0.911 0.714-0.964 0.161-3.241-0.679t-2.902-1.589q-0.232-0.268-0.304-0.643-0.018-0.214 0.071-0.464 0.071-0.179 0.607-0.839t3.232-3.857q0.018 0 1.071-1.25 0.268-0.339 0.705-0.438t0.884 0.063q0.429 0.179 0.67 0.518t0.223 0.75zM11.143 19.071q-0.054 0.982-0.929 1.25l-2.143 0.696q-4.911 1.571-5.214 1.571-0.625-0.036-0.964-0.643-0.214-0.446-0.304-1.339-0.143-1.357 0.018-2.973t0.536-2.223 1-0.571q0.232 0 3.607 1.375 1.25 0.518 2.054 0.839l1.5 0.607q0.411 0.161 0.634 0.545t0.205 0.866zM25.893 24.375q-0.125 0.964-1.634 2.875t-2.42 2.268q-0.661 0.25-1.125-0.125-0.25-0.179-3.286-5.125l-0.839-1.375q-0.25-0.375-0.205-0.821t0.348-0.821q0.625-0.768 1.482-0.464 0.018 0.018 2.125 0.714 3.625 1.179 4.321 1.42t0.839 0.366q0.5 0.393 0.393 1.089zM13.893 13.089q0.089 1.821-0.964 2.179-1.036 0.304-2.036-1.268l-6.75-10.679q-0.143-0.625 0.339-1.107 0.732-0.768 3.705-1.598t4.009-0.563q0.714 0.179 0.875 0.804 0.054 0.321 0.393 5.455t0.429 6.777zM25.714 15.018q0.054 0.696-0.464 1.054-0.268 0.179-5.875 1.536-1.196 0.268-1.625 0.411l0.018-0.036q-0.411 0.107-0.821-0.071t-0.661-0.571q-0.536-0.839 0-1.554 0.018-0.018 1.339-1.821 2.232-3.054 2.679-3.643t0.607-0.696q0.5-0.339 1.161-0.036 0.857 0.411 2.196 2.384t1.446 2.991v0.054z"></path>
711</symbol>
712<symbol id="icon-vine" viewBox="0 0 27 32">
713<path class="path1" d="M26.732 14.768v3.536q-1.804 0.411-3.536 0.411-1.161 2.429-2.955 4.839t-3.241 3.848-2.286 1.902q-1.429 0.804-2.893-0.054-0.5-0.304-1.080-0.777t-1.518-1.491-1.83-2.295-1.92-3.286-1.884-4.357-1.634-5.616-1.259-6.964h5.054q0.464 3.893 1.25 7.116t1.866 5.661 2.17 4.205 2.5 3.482q3.018-3.018 5.125-7.25-2.536-1.286-3.982-3.929t-1.446-5.946q0-3.429 1.857-5.616t5.071-2.188q3.179 0 4.875 1.884t1.696 5.313q0 2.839-1.036 5.107-0.125 0.018-0.348 0.054t-0.821 0.036-1.125-0.107-1.107-0.455-0.902-0.92q0.554-1.839 0.554-3.286 0-1.554-0.518-2.357t-1.411-0.804q-0.946 0-1.518 0.884t-0.571 2.509q0 3.321 1.875 5.241t4.768 1.92q1.107 0 2.161-0.25z"></path>
714</symbol>
715<symbol id="icon-vk" viewBox="0 0 35 32">
716<path class="path1" d="M34.232 9.286q0.411 1.143-2.679 5.25-0.429 0.571-1.161 1.518-1.393 1.786-1.607 2.339-0.304 0.732 0.25 1.446 0.304 0.375 1.446 1.464h0.018l0.071 0.071q2.518 2.339 3.411 3.946 0.054 0.089 0.116 0.223t0.125 0.473-0.009 0.607-0.446 0.491-1.054 0.223l-4.571 0.071q-0.429 0.089-1-0.089t-0.929-0.393l-0.357-0.214q-0.536-0.375-1.25-1.143t-1.223-1.384-1.089-1.036-1.009-0.277q-0.054 0.018-0.143 0.063t-0.304 0.259-0.384 0.527-0.304 0.929-0.116 1.384q0 0.268-0.063 0.491t-0.134 0.33l-0.071 0.089q-0.321 0.339-0.946 0.393h-2.054q-1.268 0.071-2.607-0.295t-2.348-0.946-1.839-1.179-1.259-1.027l-0.446-0.429q-0.179-0.179-0.491-0.536t-1.277-1.625-1.893-2.696-2.188-3.768-2.33-4.857q-0.107-0.286-0.107-0.482t0.054-0.286l0.071-0.107q0.268-0.339 1.018-0.339l4.893-0.036q0.214 0.036 0.411 0.116t0.286 0.152l0.089 0.054q0.286 0.196 0.429 0.571 0.357 0.893 0.821 1.848t0.732 1.455l0.286 0.518q0.518 1.071 1 1.857t0.866 1.223 0.741 0.688 0.607 0.25 0.482-0.089q0.036-0.018 0.089-0.089t0.214-0.393 0.241-0.839 0.17-1.446 0-2.232q-0.036-0.714-0.161-1.304t-0.25-0.821l-0.107-0.214q-0.446-0.607-1.518-0.768-0.232-0.036 0.089-0.429 0.304-0.339 0.679-0.536 0.946-0.464 4.268-0.429 1.464 0.018 2.411 0.232 0.357 0.089 0.598 0.241t0.366 0.429 0.188 0.571 0.063 0.813-0.018 0.982-0.045 1.259-0.027 1.473q0 0.196-0.018 0.75t-0.009 0.857 0.063 0.723 0.205 0.696 0.402 0.438q0.143 0.036 0.304 0.071t0.464-0.196 0.679-0.616 0.929-1.196 1.214-1.92q1.071-1.857 1.911-4.018 0.071-0.179 0.179-0.313t0.196-0.188l0.071-0.054 0.089-0.045t0.232-0.054 0.357-0.009l5.143-0.036q0.696-0.089 1.143 0.045t0.554 0.295z"></path>
717</symbol>
718<symbol id="icon-search" viewBox="0 0 30 32">
719<path class="path1" d="M20.571 14.857q0-3.304-2.348-5.652t-5.652-2.348-5.652 2.348-2.348 5.652 2.348 5.652 5.652 2.348 5.652-2.348 2.348-5.652zM29.714 29.714q0 0.929-0.679 1.607t-1.607 0.679q-0.964 0-1.607-0.679l-6.125-6.107q-3.196 2.214-7.125 2.214-2.554 0-4.884-0.991t-4.018-2.679-2.679-4.018-0.991-4.884 0.991-4.884 2.679-4.018 4.018-2.679 4.884-0.991 4.884 0.991 4.018 2.679 2.679 4.018 0.991 4.884q0 3.929-2.214 7.125l6.125 6.125q0.661 0.661 0.661 1.607z"></path>
720</symbol>
721<symbol id="icon-envelope-o" viewBox="0 0 32 32">
722<path class="path1" d="M29.714 26.857v-13.714q-0.571 0.643-1.232 1.179-4.786 3.679-7.607 6.036-0.911 0.768-1.482 1.196t-1.545 0.866-1.83 0.438h-0.036q-0.857 0-1.83-0.438t-1.545-0.866-1.482-1.196q-2.821-2.357-7.607-6.036-0.661-0.536-1.232-1.179v13.714q0 0.232 0.17 0.402t0.402 0.17h26.286q0.232 0 0.402-0.17t0.17-0.402zM29.714 8.089v-0.438t-0.009-0.232-0.054-0.223-0.098-0.161-0.161-0.134-0.25-0.045h-26.286q-0.232 0-0.402 0.17t-0.17 0.402q0 3 2.625 5.071 3.446 2.714 7.161 5.661 0.107 0.089 0.625 0.527t0.821 0.67 0.795 0.563 0.902 0.491 0.768 0.161h0.036q0.357 0 0.768-0.161t0.902-0.491 0.795-0.563 0.821-0.67 0.625-0.527q3.714-2.946 7.161-5.661 0.964-0.768 1.795-2.063t0.83-2.348zM32 7.429v19.429q0 1.179-0.839 2.018t-2.018 0.839h-26.286q-1.179 0-2.018-0.839t-0.839-2.018v-19.429q0-1.179 0.839-2.018t2.018-0.839h26.286q1.179 0 2.018 0.839t0.839 2.018z"></path>
723</symbol>
724<symbol id="icon-close" viewBox="0 0 25 32">
725<path class="path1" d="M23.179 23.607q0 0.714-0.5 1.214l-2.429 2.429q-0.5 0.5-1.214 0.5t-1.214-0.5l-5.25-5.25-5.25 5.25q-0.5 0.5-1.214 0.5t-1.214-0.5l-2.429-2.429q-0.5-0.5-0.5-1.214t0.5-1.214l5.25-5.25-5.25-5.25q-0.5-0.5-0.5-1.214t0.5-1.214l2.429-2.429q0.5-0.5 1.214-0.5t1.214 0.5l5.25 5.25 5.25-5.25q0.5-0.5 1.214-0.5t1.214 0.5l2.429 2.429q0.5 0.5 0.5 1.214t-0.5 1.214l-5.25 5.25 5.25 5.25q0.5 0.5 0.5 1.214z"></path>
726</symbol>
727<symbol id="icon-angle-down" viewBox="0 0 21 32">
728<path class="path1" d="M19.196 13.143q0 0.232-0.179 0.411l-8.321 8.321q-0.179 0.179-0.411 0.179t-0.411-0.179l-8.321-8.321q-0.179-0.179-0.179-0.411t0.179-0.411l0.893-0.893q0.179-0.179 0.411-0.179t0.411 0.179l7.018 7.018 7.018-7.018q0.179-0.179 0.411-0.179t0.411 0.179l0.893 0.893q0.179 0.179 0.179 0.411z"></path>
729</symbol>
730<symbol id="icon-folder-open" viewBox="0 0 34 32">
731<path class="path1" d="M33.554 17q0 0.554-0.554 1.179l-6 7.071q-0.768 0.911-2.152 1.545t-2.563 0.634h-19.429q-0.607 0-1.080-0.232t-0.473-0.768q0-0.554 0.554-1.179l6-7.071q0.768-0.911 2.152-1.545t2.563-0.634h19.429q0.607 0 1.080 0.232t0.473 0.768zM27.429 10.857v2.857h-14.857q-1.679 0-3.518 0.848t-2.929 2.134l-6.107 7.179q0-0.071-0.009-0.223t-0.009-0.223v-17.143q0-1.643 1.179-2.821t2.821-1.179h5.714q1.643 0 2.821 1.179t1.179 2.821v0.571h9.714q1.643 0 2.821 1.179t1.179 2.821z"></path>
732</symbol>
733<symbol id="icon-twitter" viewBox="0 0 30 32">
734<path class="path1" d="M28.929 7.286q-1.196 1.75-2.893 2.982 0.018 0.25 0.018 0.75 0 2.321-0.679 4.634t-2.063 4.437-3.295 3.759-4.607 2.607-5.768 0.973q-4.839 0-8.857-2.589 0.625 0.071 1.393 0.071 4.018 0 7.161-2.464-1.875-0.036-3.357-1.152t-2.036-2.848q0.589 0.089 1.089 0.089 0.768 0 1.518-0.196-2-0.411-3.313-1.991t-1.313-3.67v-0.071q1.214 0.679 2.607 0.732-1.179-0.786-1.875-2.054t-0.696-2.75q0-1.571 0.786-2.911 2.161 2.661 5.259 4.259t6.634 1.777q-0.143-0.679-0.143-1.321 0-2.393 1.688-4.080t4.080-1.688q2.5 0 4.214 1.821 1.946-0.375 3.661-1.393-0.661 2.054-2.536 3.179 1.661-0.179 3.321-0.893z"></path>
735</symbol>
736<symbol id="icon-facebook" viewBox="0 0 19 32">
737<path class="path1" d="M17.125 0.214v4.714h-2.804q-1.536 0-2.071 0.643t-0.536 1.929v3.375h5.232l-0.696 5.286h-4.536v13.554h-5.464v-13.554h-4.554v-5.286h4.554v-3.893q0-3.321 1.857-5.152t4.946-1.83q2.625 0 4.071 0.214z"></path>
738</symbol>
739<symbol id="icon-github" viewBox="0 0 27 32">
740<path class="path1" d="M13.714 2.286q3.732 0 6.884 1.839t4.991 4.991 1.839 6.884q0 4.482-2.616 8.063t-6.759 4.955q-0.482 0.089-0.714-0.125t-0.232-0.536q0-0.054 0.009-1.366t0.009-2.402q0-1.732-0.929-2.536 1.018-0.107 1.83-0.321t1.679-0.696 1.446-1.188 0.946-1.875 0.366-2.688q0-2.125-1.411-3.679 0.661-1.625-0.143-3.643-0.5-0.161-1.446 0.196t-1.643 0.786l-0.679 0.429q-1.661-0.464-3.429-0.464t-3.429 0.464q-0.286-0.196-0.759-0.482t-1.491-0.688-1.518-0.241q-0.804 2.018-0.143 3.643-1.411 1.554-1.411 3.679 0 1.518 0.366 2.679t0.938 1.875 1.438 1.196 1.679 0.696 1.83 0.321q-0.696 0.643-0.875 1.839-0.375 0.179-0.804 0.268t-1.018 0.089-1.17-0.384-0.991-1.116q-0.339-0.571-0.866-0.929t-0.884-0.429l-0.357-0.054q-0.375 0-0.518 0.080t-0.089 0.205 0.161 0.25 0.232 0.214l0.125 0.089q0.393 0.179 0.777 0.679t0.563 0.911l0.179 0.411q0.232 0.679 0.786 1.098t1.196 0.536 1.241 0.125 0.991-0.063l0.411-0.071q0 0.679 0.009 1.58t0.009 0.973q0 0.321-0.232 0.536t-0.714 0.125q-4.143-1.375-6.759-4.955t-2.616-8.063q0-3.732 1.839-6.884t4.991-4.991 6.884-1.839zM5.196 21.982q0.054-0.125-0.125-0.214-0.179-0.054-0.232 0.036-0.054 0.125 0.125 0.214 0.161 0.107 0.232-0.036zM5.75 22.589q0.125-0.089-0.036-0.286-0.179-0.161-0.286-0.054-0.125 0.089 0.036 0.286 0.179 0.179 0.286 0.054zM6.286 23.393q0.161-0.125 0-0.339-0.143-0.232-0.304-0.
740107-0.161 0.089 0 0.321t0.304 0.125zM7.036 24.143q0.143-0.143-0.071-0.339-0.214-0.214-0.357-0.054-0.161 0.143 0.071 0.339 0.214 0.214 0.357 0.054zM8.054 24.589q0.054-0.196-0.232-0.286-0.268-0.071-0.339 0.125t0.232 0.268q0.268 0.107 0.339-0.107zM9.179 24.679q0-0.232-0.304-0.196-0.286 0-0.286 0.196 0 0.232 0.304 0.196 0.286 0 0.286-0.196zM10.214 24.5q-0.036-0.196-0.321-0.161-0.286 0.054-0.25 0.268t0.321 0.143 0.25-0.25z"></path>
741</symbol>
742<symbol id="icon-bars" viewBox="0 0 27 32">
743<path class="path1" d="M27.429 24v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804zM27.429 14.857v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804zM27.429 5.714v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804z"></path>
744</symbol>
745<symbol id="icon-google-plus" viewBox="0 0 41 32">
746<path class="path1" d="M25.661 16.304q0 3.714-1.554 6.616t-4.429 4.536-6.589 1.634q-2.661 0-5.089-1.036t-4.179-2.786-2.786-4.179-1.036-5.089 1.036-5.089 2.786-4.179 4.179-2.786 5.089-1.036q5.107 0 8.768 3.429l-3.554 3.411q-2.089-2.018-5.214-2.018-2.196 0-4.063 1.107t-2.955 3.009-1.089 4.152 1.089 4.152 2.955 3.009 4.063 1.107q1.482 0 2.723-0.411t2.045-1.027 1.402-1.402 0.875-1.482 0.384-1.321h-7.429v-4.5h12.357q0.214 1.125 0.214 2.179zM41.143 14.125v3.75h-3.732v3.732h-3.75v-3.732h-3.732v-3.75h3.732v-3.732h3.75v3.732h3.732z"></path>
747</symbol>
748<symbol id="icon-linkedin" viewBox="0 0 27 32">
749<path class="path1" d="M6.232 11.161v17.696h-5.893v-17.696h5.893zM6.607 5.696q0.018 1.304-0.902 2.179t-2.42 0.875h-0.036q-1.464 0-2.357-0.875t-0.893-2.179q0-1.321 0.92-2.188t2.402-0.866 2.375 0.866 0.911 2.188zM27.429 18.714v10.143h-5.875v-9.464q0-1.875-0.723-2.938t-2.259-1.063q-1.125 0-1.884 0.616t-1.134 1.527q-0.196 0.536-0.196 1.446v9.875h-5.875q0.036-7.125 0.036-11.554t-0.018-5.286l-0.018-0.857h5.875v2.571h-0.036q0.357-0.571 0.732-1t1.009-0.929 1.554-0.777 2.045-0.277q3.054 0 4.911 2.027t1.857 5.938z"></path>
750</symbol>
751<symbol id="icon-quote-right" viewBox="0 0 30 32">
752<path class="path1" d="M13.714 5.714v12.571q0 1.857-0.723 3.545t-1.955 2.92-2.92 1.955-3.545 0.723h-1.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h1.143q1.893 0 3.232-1.339t1.339-3.232v-0.571q0-0.714-0.5-1.214t-1.214-0.5h-4q-1.429 0-2.429-1t-1-2.429v-6.857q0-1.429 1-2.429t2.429-1h6.857q1.429 0 2.429 1t1 2.429zM29.714 5.714v12.571q0 1.857-0.723 3.545t-1.955 2.92-2.92 1.955-3.545 0.723h-1.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h1.143q1.893 0 3.232-1.339t1.339-3.232v-0.571q0-0.714-0.5-1.214t-1.214-0.5h-4q-1.429 0-2.429-1t-1-2.429v-6.857q0-1.429 1-2.429t2.429-1h6.857q1.429 0 2.429 1t1 2.429z"></path>
753</symbol>
754<symbol id="icon-mail-reply" viewBox="0 0 32 32">
755<path class="path1" d="M32 20q0 2.964-2.268 8.054-0.054 0.125-0.188 0.429t-0.241 0.536-0.232 0.393q-0.214 0.304-0.5 0.304-0.268 0-0.42-0.179t-0.152-0.446q0-0.161 0.045-0.473t0.045-0.42q0.089-1.214 0.089-2.196 0-1.804-0.313-3.232t-0.866-2.473-1.429-1.804-1.884-1.241-2.375-0.759-2.75-0.384-3.134-0.107h-4v4.571q0 0.464-0.339 0.804t-0.804 0.339-0.804-0.339l-9.143-9.143q-0.339-0.339-0.339-0.804t0.339-0.804l9.143-9.143q0.339-0.339 0.804-0.339t0.804 0.339 0.339 0.804v4.571h4q12.732 0 15.625 7.196 0.946 2.393 0.946 5.946z"></path>
756</symbol>
757<symbol id="icon-youtube" viewBox="0 0 27 32">
758<path class="path1" d="M17.339 22.214v3.768q0 1.196-0.696 1.196-0.411 0-0.804-0.393v-5.375q0.393-0.393 0.804-0.393 0.696 0 0.696 1.196zM23.375 22.232v0.821h-1.607v-0.821q0-1.214 0.804-1.214t0.804 1.214zM6.125 18.339h1.911v-1.679h-5.571v1.679h1.875v10.161h1.786v-10.161zM11.268 28.5h1.589v-8.821h-1.589v6.75q-0.536 0.75-1.018 0.75-0.321 0-0.375-0.375-0.018-0.054-0.018-0.625v-6.5h-1.589v6.982q0 0.875 0.143 1.304 0.214 0.661 1.036 0.661 0.857 0 1.821-1.089v0.964zM18.929 25.857v-3.518q0-1.304-0.161-1.768-0.304-1-1.268-1-0.893 0-1.661 0.964v-3.875h-1.589v11.839h1.589v-0.857q0.804 0.982 1.661 0.982 0.964 0 1.268-0.982 0.161-0.482 0.161-1.786zM24.964 25.679v-0.232h-1.625q0 0.911-0.036 1.089-0.
758125 0.643-0.714 0.643-0.821 0-0.821-1.232v-1.554h3.196v-1.839q0-1.411-0.482-2.071-0.696-0.911-1.893-0.911-1.214 0-1.911 0.911-0.5 0.661-0.5 2.071v3.089q0 1.411 0.518 2.071 0.696 0.911 1.929 0.911 1.286 0 1.929-0.946 0.321-0.482 0.375-0.964 0.036-0.161 0.036-1.036zM14.107 9.375v-3.75q0-1.232-0.768-1.232t-0.768 1.232v3.75q0 1.25 0.768 1.25t0.768-1.25zM26.946 22.786q0 4.179-0.464 6.25-0.25 1.054-1.036 1.768t-1.821 0.821q-3.286 0.375-9.911 0.375t-9.911-0.375q-1.036-0.107-1.83-0.821t-1.027-1.768q-0.464-2-0.464-6.25 0-4.179 0.464-6.25 0.25-1.054 1.036-1.768t1.839-0.839q3.268-0.357 9.893-0.357t9.911 0.357q1.036 0.125 1.83 0.839t1.027 1.768q0.464 2 0.464 6.25zM9.125 0h1.821l-2.161 7.125v4.839h-1.786v-4.839q-0.25-1.321-1.089-3.786-0.661-1.839-1.161-3.339h1.893l1.268 4.696zM15.732 5.946v3.125q0 1.446-0.5 2.107-0.661 0.911-1.893 0.911-1.196 0-1.875-0.911-0.5-0.679-0.5-2.107v-3.125q0-1.429 0.5-2.089 0.679-0.911 1.875-0.911 1.232 0 1.893 0.911 0.5 0.661 0.5 2.089zM21.714 3.054v8.911h-1.625v-0.982q-0.946 1.107-1.839 1.107-0.821 0-1.054-0.661-0.143-0.429-0.143-1.339v-7.036h1.625v6.554q0 0.589 0.018 0.625 0.054 0.393 0.375 0.393 0.482 0 1.018-0.768v-6.804h1.625z"></path>
759</symbol>
760<symbol id="icon-dropbox" viewBox="0 0 32 32">
761<path class="path1" d="M7.179 12.625l8.821 5.446-6.107 5.089-8.75-5.696zM24.786 22.536v1.929l-8.75 5.232v0.018l-0.018-0.018-0.018 0.018v-0.018l-8.732-5.232v-1.929l2.625 1.714 6.107-5.071v-0.036l0.018 0.018 0.018-0.018v0.036l6.125 5.071zM9.893 2.107l6.107 5.089-8.821 5.429-6.036-4.821zM24.821 12.625l6.036 4.839-8.732 5.696-6.125-5.089zM22.125 2.107l8.732 5.696-6.036 4.821-8.821-5.429z"></path>
762</symbol>
763<symbol id="icon-instagram" viewBox="0 0 27 32">
764<path class="path1" d="M18.286 16q0-1.893-1.339-3.232t-3.232-1.339-3.232 1.339-1.339 3.232 1.339 3.232 3.232 1.339 3.232-1.339 1.339-3.232zM20.75 16q0 2.929-2.054 4.982t-4.982 2.054-4.982-2.054-2.054-4.982 2.054-4.982 4.982-2.054 4.982 2.054 2.054 4.982zM22.679 8.679q0 0.679-0.482 1.161t-1.161 0.482-1.161-0.482-0.482-1.161 0.482-1.161 1.161-0.482 1.161 0.482 0.482 1.161zM13.714 4.75q-0.125 0-1.366-0.009t-1.884 0-1.723 0.054-1.839 0.179-1.277 0.33q-0.893 0.357-1.571 1.036t-1.036 1.571q-0.196 0.518-0.33 1.277t-0.179 1.839-0.054 1.723 0 1.884 0.009 1.366-0.009 1.366 0 1.884 0.054 1.723 0.179 1.839 0.33 1.277q0.357 0.893 1.036 1.571t1.571 1.036q0.518 0.196 1.277 0.33t1.839 0.179 1.723 0.054 1.884 0 1.366-0.009 1.366 0.009 1.884 0 1.723-0.054 1.839-0.179 1.277-0.33q0.893-0.357 1.571-1.036t1.036-1.571q0.196-0.518 0.33-1.277t0.179-1.839 0.054-1.723 0-1.884-0.009-1.366 0.009-1.366 0-1.884-0.054-1.723-0.179-1.839-0.33-1.277q-0.357-0.893-1.036-1.571t-1.571-1.036q-0.518-0.196-1.277-0.33t-1.839-0.179-1.723-0.054-1.884 0-1.366 0.009zM27.429 16q0 4.089-0.089 5.661-0.179 3.714-2.214 5.75t-5.75 2.214q-1.571 0.089-5.661 0.089t-5.661-0.089q-3.714-0.179-5.75-2.214t-2.214-5.75q-0.089-1.571-0.089-5.661t0.089-5.661q0.179-3.714 2.214-5.75t5.75-2.214q1.571-0.089 5.661-0.089t5.661 0.089q3.714 0.179 5.75 2.214t2.214 5.75q0.089 1.571 0.089 5.661z"></path>
765</symbol>
766<symbol id="icon-flickr" viewBox="0 0 27 32">
767<path class="path1" d="M22.286 2.286q2.125 0 3.634 1.509t1.509 3.634v17.143q0 2.125-1.509 3.634t-3.634 1.509h-17.143q-2.125 0-3.634-1.509t-1.509-3.634v-17.143q0-2.125 1.509-3.634t3.634-1.509h17.143zM12.464 16q0-1.571-1.107-2.679t-2.679-1.107-2.679 1.107-1.107 2.679 1.107 2.679 2.679 1.107 2.679-1.107 1.107-2.679zM22.536 16q0-1.571-1.107-2.679t-2.679-1.107-2.679 1.107-1.107 2.679 1.107 2.679 2.679 1.107 2.679-1.107 1.107-2.679z"></path>
768</symbol>
769<symbol id="icon-tumblr" viewBox="0 0 19 32">
770<path class="path1" d="M16.857 23.732l1.429 4.232q-0.411 0.625-1.982 1.179t-3.161 0.571q-1.857 0.036-3.402-0.464t-2.545-1.321-1.696-1.893-0.991-2.143-0.295-2.107v-9.714h-3v-3.839q1.286-0.464 2.304-1.241t1.625-1.607 1.036-1.821 0.607-1.768 0.268-1.58q0.018-0.089 0.080-0.152t0.134-0.063h4.357v7.571h5.946v4.5h-5.964v9.25q0 0.536 0.116 1t0.402 0.938 0.884 0.741 1.455 0.25q1.393-0.036 2.393-0.518z"></path>
771</symbol>
772<symbol id="icon-dockerhub" viewBox="0 0 24 28">
773<path class="path1" d="M1.597 10.257h2.911v2.83H1.597v-2.83zm3.573 0h2.91v2.83H5.17v-2.83zm0-3.627h2.91v2.829H5.17V6.63zm3.57 3.627h2.912v2.83H8.74v-2.83zm0-3.627h2.912v2.829H8.74V6.63zm3.573 3.627h2.911v2.83h-2.911v-2.83zm0-3.627h2.911v2.829h-2.911V6.63zm3.572 3.627h2.911v2.83h-2.911v-2.83zM12.313 3h2.911v2.83h-2.911V3zm-6.65 14.173c-.449 0-.812.354-.812.788 0 .435.364.788.812.788.447 0 .811-.353.811-.788 0-.434-.363-.788-.811-.788"></path>
774<path class="path2" d="M28.172 11.721c-.978-.549-2.278-.624-3.388-.306-.136-1.146-.91-2.149-1.83-2.869l-.366-.28
7746-.307.345c-.618.692-.8 1.845-.718 2.73.063.651.273 1.312.685 1.834-.313.183-.668.328-.985.434-.646.212-1.347.33-2.028.33H.083l-.042.429c-.137 1.432.065 2.866.674 4.173l.262.519.03.048c1.8 2.973 4.963 4.225 8.41 4.225 6.672 0 12.174-2.896 14.702-9.015 1.689.085 3.417-.4 4.243-1.968l.211-.4-.401-.223zM5.664 19.458c-.85 0-1.542-.671-1.542-1.497 0-.825.691-1.498 1.541-1.498.849 0 1.54.672 1.54 1.497s-.69 1.498-1.539 1.498z"></path>
775</symbol>
776<symbol id="icon-dribbble" viewBox="0 0 27 32">
777<path class="path1" d="M18.286 26.786q-0.75-4.304-2.5-8.893h-0.036l-0.036 0.018q-0.286 0.107-0.768 0.295t-1.804 0.875-2.446 1.464-2.339 2.045-1.839 2.643l-0.268-0.196q3.286 2.679 7.464 2.679 2.357 0 4.571-0.929zM14.982 15.946q-0.375-0.875-0.946-1.982-5.554 1.661-12.018 1.661-0.018 0.125-0.018 0.375 0 2.214 0.786 4.223t2.214 3.598q0.893-1.589 2.205-2.973t2.545-2.223 2.33-1.446 1.777-0.857l0.661-0.232q0.071-0.018 0.232-0.063t0.232-0.080zM13.071 12.161q-2.143-3.804-4.357-6.75-2.464 1.161-4.179 3.321t-2.286 4.857q5.393 0 10.821-1.429zM25.286 17.857q-3.75-1.071-7.304-0.518 1.554 4.268 2.286 8.375 1.982-1.339 3.304-3.384t1.714-4.473zM10.911 4.625q-0.018 0-0.036 0.018 0.018-0.018 0.036-0.018zM21.446 7.214q-3.304-2.929-7.732-2.929-1.357 0-2.768 0.339 2.339 3.036 4.393 6.821 1.232-0.464 2.321-1.080t1.723-1.098 1.17-1.018 0.67-0.723zM25.429 15.875q-0.054-4.143-2.661-7.321l-0.018 0.018q-0.161 0.214-0.339 0.438t-0.777 0.795-1.268 1.080-1.786 1.161-2.348 1.152q0.446 0.946 0.786 1.696 0.036 0.107 0.116 0.313t0.134 0.295q0.643-0.089 1.33-0.125t1.313-0.036 1.232 0.027 1.143 0.071 1.009 0.098 0.857 0.116 0.652 0.107 0.446 0.080zM27.429 16q0 3.732-1.839 6.884t-4.991 4.991-6.884 1.839-6.884-1.839-4.991-4.991-1.839-6.884 1.839-6.884 4.991-4.991 6.884-1.839 6.884 1.839 4.991 4.991 1.839 6.884z"></path>
778</symbol>
779<symbol id="icon-skype" viewBox="0 0 27 32">
780<path class="path1" d="M20.946 18.982q0-0.893-0.348-1.634t-0.866-1.223-1.304-0.875-1.473-0.607-1.563-0.411l-1.857-0.429q-0.536-0.125-0.786-0.188t-0.625-0.205-0.536-0.286-0.295-0.375-0.134-0.536q0-1.375 2.571-1.375 0.768 0 1.375 0.214t0.964 0.509 0.679 0.598 0.714 0.518 0.857 0.214q0.839 0 1.348-0.571t0.509-1.375q0-0.982-1-1.777t-2.536-1.205-3.25-0.411q-1.214 0-2.357 0.277t-2.134 0.839-1.589 1.554-0.598 2.295q0 1.089 0.339 1.902t1 1.348 1.429 0.866 1.839 0.58l2.607 0.643q1.607 0.393 2 0.643 0.571 0.357 0.571 1.071 0 0.696-0.714 1.152t-1.875 0.455q-0.911 0-1.634-0.286t-1.161-0.688-0.813-0.804-0.821-0.688-0.964-0.286q-0.893 0-1.348 0.536t-0.455 1.339q0 1.643 2.179 2.813t5.196 1.17q1.304 0 2.5-0.33t2.188-0.955 1.58-1.67 0.589-2.348zM27.429 22.857q0 2.839-2.009 4.848t-4.848 2.009q-2.321 0-4.179-1.429-1.375 0.286-2.679 0.286-2.554 0-4.884-0.991t-4.018-2.679-2.679-4.018-0.991-4.884q0-1.304 0.286-2.679-1.429-1.857-1.429-4.179 0-2.839 2.009-4.848t4.848-2.009q2.321 0 4.179 1.429 1.375-0.286 2.679-0.286 2.554 0 4.884 0.991t4.018 2.679 2.679 4.018 0.991 4.884q0 1.304-0.286 2.679 1.429 1.857 1.429 4.179z"></path>
781</symbol>
782<symbol id="icon-foursquare" viewBox="0 0 23 32">
783<path class="path1" d="M17.857 7.75l0.661-3.464q0.089-0.411-0.161-0.714t-0.625-0.304h-12.714q-0.411 0-0.688 0.304t-0.277 0.661v19.661q0 0.125 0.107 0.018l5.196-6.286q0.411-0.464 0.679-0.598t0.857-0.134h4.268q0.393 0 0.661-0.259t0.321-0.527q0.429-2.321 0.661-3.411 0.071-0.375-0.205-0.714t-0.652-0.339h-5.25q-0.518 0-0.857-0.339t-0.339-0.857v-0.75q0-0.518 0.339-0.848t0.857-0.33h6.179q0.321 0 0.625-0.241t0.357-0.527zM21.911 3.786q-0.268 1.304-0.955 4.759t-1.241 6.25-0.625 3.098q-0.107 0.393-0.161 0.58t-0.25 0.58-0.438 0.589-0.688 0.375-1.036 0.179h-4.839q-0.232 0-0.393 0.179-0.143 0.161-7.607 8.821-0.393 0.446-1.045 0.509t-0.866-0.098q-0.982-0.393-0.982-1.75v-25.179q0-0.982 0.679-1.83t2.143-0.848h15.857q1.696 0 2.268 0.946t0.179 2.839zM21.911 3.786l-2.821 14.107q0.071-0.304 0.625-3.098t1.241-6.25 0.955-4.759z"></path>
784</symbol>
785<symbol id="icon-wordpress" viewBox="0 0 32 32">
786<path class="path1" d="M2.268 16q0-2.911 1.196-5.589l6.554 17.946q-3.5-1.696-5.625-5.018t-2.125-7.339zM25.268 15.304q0 0.339-0.045 0.688t-0.179 0.884-0.205 0.786-0.313 1.054-0.313 1.036l-1.357 4.571-4.964-14.75q0.821-0.054 1.571-0.143 0.339-0.036 0.464-0.33t-0.045-0.554-0.509-0.241l-3.661 0.179q-1.339-0.018-3.607-0.179-0.214-0.018-0.366 0.089t-0.205 0.268-0.027 0.33 0.161 0.295 0.348 0.143l1.429 0.143 2.143 5.857-3 9-5-14.857q0.821-0.054 1.571-0.143 0.339-0.036 0.464-0.33t-0.045-0.554-0.509-0.241l-3.661 0.179q-0.
786125 0-0.411-0.009t-0.464-0.009q1.875-2.857 4.902-4.527t6.563-1.67q2.625 0 5.009 0.946t4.259 2.661h-0.179q-0.982 0-1.643 0.723t-0.661 1.705q0 0.214 0.036 0.429t0.071 0.384 0.143 0.411 0.161 0.375 0.214 0.402 0.223 0.375 0.259 0.429 0.25 0.411q1.125 1.911 1.125 3.786zM16.232 17.196l4.232 11.554q0.018 0.107 0.089 0.196-2.25 0.786-4.554 0.786-2 0-3.875-0.571zM28.036 9.411q1.696 3.107 1.696 6.589 0 3.732-1.857 6.884t-4.982 4.973l4.196-12.107q1.054-3.018 1.054-4.929 0-0.75-0.107-1.411zM16 0q3.25 0 6.214 1.268t5.107 3.411 3.411 5.107 1.268 6.214-1.268 6.214-3.411 5.107-5.107 3.411-6.214 1.268-6.214-1.268-5.107-3.411-3.411-5.107-1.268-6.214 1.268-6.214 3.411-5.107 5.107-3.411 6.214-1.268zM16 31.268q3.089 0 5.92-1.214t4.875-3.259 3.259-4.875 1.214-5.92-1.214-5.92-3.259-4.875-4.875-3.259-5.92-1.214-5.92 1.214-4.875 3.259-3.259 4.875-1.214 5.92 1.214 5.92 3.259 4.875 4.875 3.259 5.92 1.214z"></path>
787</symbol>
788<symbol id="icon-stumbleupon" viewBox="0 0 34 32">
789<path class="path1" d="M18.964 12.714v-2.107q0-0.75-0.536-1.286t-1.286-0.536-1.286 0.536-0.536 1.286v10.929q0 3.125-2.25 5.339t-5.411 2.214q-3.179 0-5.42-2.241t-2.241-5.42v-4.75h5.857v4.679q0 0.768 0.536 1.295t1.286 0.527 1.286-0.527 0.536-1.295v-11.071q0-3.054 2.259-5.214t5.384-2.161q3.143 0 5.393 2.179t2.25 5.25v2.429l-3.482 1.036zM28.429 16.679h5.857v4.75q0 3.179-2.241 5.42t-5.42 2.241q-3.161 0-5.411-2.223t-2.25-5.366v-4.786l2.339 1.089 3.482-1.036v4.821q0 0.75 0.536 1.277t1.286 0.527 1.286-0.527 0.536-1.277v-4.911z"></path>
790</symbol>
791<symbol id="icon-digg" viewBox="0 0 37 32">
792<path class="path1" d="M5.857 5.036h3.643v17.554h-9.5v-12.446h5.857v-5.107zM5.857 19.661v-6.589h-2.196v6.589h2.196zM10.964 10.143v12.446h3.661v-12.446h-3.661zM10.964 5.036v3.643h3.661v-3.643h-3.661zM16.089 10.143h9.518v16.821h-9.518v-2.911h5.857v-1.464h-5.857v-12.446zM21.946 19.661v-6.589h-2.196v6.589h2.196zM27.071 10.143h9.5v16.821h-9.5v-2.911h5.839v-1.464h-5.839v-12.446zM32.911 19.661v-6.589h-2.196v6.589h2.196z"></path>
793</symbol>
794<symbol id="icon-spotify" viewBox="0 0 27 32">
795<path class="path1" d="M20.125 21.607q0-0.571-0.536-0.911-3.446-2.054-7.982-2.054-2.375 0-5.125 0.607-0.75 0.161-0.75 0.929 0 0.357 0.241 0.616t0.634 0.259q0.089 0 0.661-0.143 2.357-0.482 4.339-0.482 4.036 0 7.089 1.839 0.339 0.196 0.589 0.196 0.339 0 0.589-0.241t0.25-0.616zM21.839 17.768q0-0.714-0.625-1.089-4.232-2.518-9.786-2.518-2.732 0-5.411 0.75-0.857 0.232-0.857 1.143 0 0.446 0.313 0.759t0.759 0.313q0.125 0 0.661-0.143 2.179-0.589 4.482-0.589 4.982 0 8.714 2.214 0.429 0.232 0.679 0.232 0.446 0 0.759-0.313t0.313-0.759zM23.768 13.339q0-0.839-0.714-1.25-2.25-1.304-5.232-1.973t-6.125-0.67q-3.643 0-6.5 0.839-0.411 0.125-0.688 0.455t-0.277 0.866q0 0.554 0.366 0.929t0.92 0.375q0.196 0 0.714-0.143 2.375-0.661 5.482-0.661 2.839 0 5.527 0.607t4.527 1.696q0.375 0.214 0.714 0.214 0.518 0 0.902-0.366t0.384-0.92zM27.429 16q0 3.732-1.839 6.884t-4.991 4.991-6.884 1.839-6.884-1.839-4.991-4.991-1.839-6.884 1.839-6.884 4.991-4.991 6.884-1.839 6.884 1.839 4.991 4.991 1.839 6.884z"></path>
796</symbol>
797<symbol id="icon-soundcloud" viewBox="0 0 41 32">
798<path class="path1" d="M14 24.5l0.286-4.304-0.286-9.339q-0.018-0.179-0.134-0.304t-0.295-0.125q-0.161 0-0.286 0.125t-0.125 0.304l-0.25 9.339 0.25 4.304q0.018 0.179 0.134 0.295t0.277 0.116q0.393 0 0.429-0.411zM19.286 23.982l0.196-3.768-0.214-10.464q0-0.286-0.232-0.429-0.143-0.089-0.286-0.089t-0.286 0.089q-0.232 0.143-0.232 0.429l-0.018 0.107-0.179 10.339q0 0.018 0.196 4.214v0.018q0 0.179 0.107 0.304 0.161 0.196 0.411 0.196 0.196 0 0.357-0.161 0.161-0.125 0.161-0.357zM0.625 17.911l0.357 2.286-0.357 2.25q-0.036 0.161-0.161 0.161t-0.161-0.161l-0.304-2.25 0.304-2.286q0.036-0.161 0.161-0.161t0.161 0.161zM2.161 16.5l0.464 3.696-0.464 3.625q-0.036 0.161-0.179 0.161-0.161 0-0.161-0.179l-0.411-3.607 0.411-3.696q0-0.161 0.161-0.161 0.143 0 0.179 0.161zM3.804 15.821l0.446 4.375-0.446 4.232q0 0.196-0.196 0.196-0.179 0-0.214-0.196l-0.375-4.232 0.375-4.375q0.036-0.214 0.214-0.214 0.196 0 0.196 0.214zM5.482 15.696l0.411 4.5-0.411 4.357q-0.036 0.232-0.25 0.232-0.232 0-0.232-0.232l-0.375-4.357 0.375-4.5q0-0.232 0.232-0.232 0.214 0 0.25 0.232zM7.161 16.018l0.375 4.179-0.375 4.393q-0.036 0.286-0.286 0.286-0.107 0-0.188-0.080t-0.080-0.205l-0.357-4.393 0.357-4.179q0-0.107 0.080-0.188t0.188-0.080q0.25 0 0.286 0.268zM8.839 13.411l0.375 6.786-0.375 4.393q0 0.125-0.089 0.223t-0.214 0.098q-0.286 0-0.321-0.321l-0.321-4.393 0.321-6.786q0.036-0.321 0.321-0.321 0.125 0 0.214 0.098t0.089 0.223zM10.518 11.875l0.339 8.357-0.339 4.357q0 0.143-0.098 0.241t-0.241 0.098q-0.321 0-0.357-0.339l-0.286-4.357 0.286-8.357q0.036-0.339 0.357-0.339 0.143 0 0.241 0.098t0.098 0.241zM12.268 11.161l0.321 9.036-0.321 4.321q-0.036 0.375-0.393 0.375-0.339 0-0.375-0.375l-0.286-4.321 0.286-9.036q0-0.161 0.116-0.277t0.259-0.116q0.161 0 0.268 0.116t0.125 0.277zM19.268 24.411v0 0zM15.732 11.089l0.268 9.107-0.268 4.268q0 0.179-0.134 0.313t-0.313 0.134-0.304-0.125-0.143-0.321l-0.25-4.268 0.25-9.107q0-0.196 0.134-0.321t0.313-0.125 0.313 0.125 0.134 0.321zM17.5 11.429l0.25 8.786-0.25 4.214q0 0.196-0.143 0.339t-0.339 0.143-0.339-0.143-0.161-0.339l-0.214-4.214 0.214-8.786q0.018-0.214 0.161-0.357t0.339-0.143 0.33 0.143 0.152 0.357zM21.286 20.214l-0.25 4.125q0 0.232-0.161 0.393t-0.393 0.161-0.393-0.161-0.179-0.393l-0.107-2.036-0.107-2.089 0.214-11.357v-0.054q0.036-0.268 0.214-0.429 0.161-0.125 0.357-0.125 0.143 0 0.268 0.089 0.25 0.143 0.286 0.464zM41.143 19.875q0 2.089-1.482 3.563t-3.571 1.473h-14.036q-0.232-0.036-0.393-0.196t-0.161-0.393v-16.054q0-0.411 0.5-0.589 1.518-0.607 3.232-0.607 3.482 0 6.036 2.348t2.857 5.777q0.946-0.393 1.964-0.393 2.089 0 3.571 1.482t1.482 3.589z"></path>
799</symbol>
800<symbol id="icon-codepen" viewBox="0 0 32 32">
801<path class="path1" d="M3.857 20.875l10.768 7.179v-6.411l-5.964-3.982zM2.75 18.304l3.446-2.304-3.446-2.304v4.607zM17.375 28.054l10.768-7.179-4.804-3.214-5.964 3.982v6.411zM16 19.25l4.857-3.25-4.857-3.25-4.857 3.25zM8.661 14.339l5.964-3.982v-6.411l-10.768 7.179zM25.804 16l3.446 2.304v-4.607zM23.339 14.339l4.804-3.214-10.768-7.179v6.411zM32 11.125v9.75q0 0.732-0.607 1.143l-14.625 9.75q-0.375 0.232-0.768 0.232t-0.768-0.232l-14.625-9.75q-0.607-0.411-0.607-1.143v-9.75q0-0.732 0.607-1.143l14.625-9.75q0.375-0.232 0.768-0.232t0.768 0.232l14.625 9.75q0.607 0.411 0.607 1.143z"></path>
802</symbol>
803<symbol id="icon-twitch" viewBox="0 0 32 32">
804<path class="path1" d="M16 7.75v7.75h-2.589v-7.75h2.589zM23.107 7.75v7.75h-2.589v-7.75h2.589zM23.107 21.321l4.518-4.536v-14.196h-21.321v18.732h5.821v3.875l3.875-3.875h7.107zM30.214 0v18.089l-7.75 7.75h-5.821l-3.875 3.875h-3.875v-3.875h-7.107v-20.679l1.946-5.161h26.482z"></path>
805</symbol>
806<symbol id="icon-meanpath" viewBox="0 0 27 32">
807<path class="path1" d="M23.411 15.036v2.036q0 0.429-0.241 0.679t-0.67 0.25h-3.607q-0.429 0-0.679-0.25t-0.25-0.679v-2.036q0-0.429 0.25-0.679t0.679-0.25h3.607q0.429 0 0.67 0.25t0.241 0.679zM14.661 19.143v-4.464q0-0.946-0.58-1.527t-1.527-0.58h-2.375q-1.214 0-1.714 0.929-0.5-0.929-1.714-0.929h-2.321q-0.946 0-1.527 0.58t-0.58 1.527v4.464q0 0.393 0.375 0.393h0.982q0.393 0 0.393-0.393v-4.107q0-0.429 0.241-0.679t0.688-0.25h1.679q0.429 0 0.679 0.25t0.25 0.679v4.107q0 0.393 0.375 0.393h0.964q0.393 0 0.393-0.393v-4.107q0-0.429 0.25-0.679t0.679-0.25h1.732q0.429 0 0.67 0.25t0.241 0.679v4.107q0 0.393 0.393 0.393h0.982q0.375 0 0.375-0.393zM25.179 17.429v-2.75q0-0.946-0.589-1.527t-1.536-0.58h-4.714q-0.946 0-1.536 0.58t-0.589 1.527v7.321q0 0.375 0.393 0.375h0.982q0.375 0 0.375-0.375v-3.214q0.554 0.75 1.679 0.75h3.411q0.946 0 1.536-0.58t0.589-1.527zM27.429 6.429v19.143q0 1.714-1.214 2.929t-2.929 1.214h-19.143q-1.714 0-2.929-1.214t-1.214-2.929v-19.143q0-1.714 1.214-2.929t2.929-1.214h19.143q1.714 0 2.929 1.214t1.214 2.929z"></path>
808</symbol>
809<symbol id="icon-pinterest-p" viewBox="0 0 23 32">
810<path class="path1" d="M0 10.661q0-1.929 0.67-3.634t1.848-2.973 2.714-2.196 3.304-1.393 3.607-0.464q2.821 0 5.25 1.188t3.946 3.455 1.518 5.125q0 1.714-0.339 3.357t-1.071 3.161-1.786 2.67-2.589 1.839-3.375 0.688q-1.214 0-2.411-0.571t-1.714-1.571q-0.179 0.696-0.5 2.009t-0.42 1.696-0.366 1.268-0.464 1.268-0.571 1.116-0.821 1.384-1.107 1.545l-0.25 0.089-0.161-0.179q-0.268-2.804-0.268-3.357 0-1.643 0.384-3.688t1.188-5.134 0.929-3.625q-0.571-1.161-0.571-3.018 0-1.482 0.929-2.786t2.357-1.304q1.089 0 1.696 0.723t0.607 1.83q0 1.179-0.786 3.411t-0.786 3.339q0 1.125 0.804 1.866t1.946 0.741q0.982 0 1.821-0.446t1.402-1.214 1-1.696 0.679-1.973 0.357-1.982 0.116-1.777q0-3.089-1.955-4.813t-5.098-1.723q-3.571 0-5.964 2.313t-2.393 5.866q0 0.786 0.223 1.518t0.482 1.161 0.482 0.813 0.223 0.545q0 0.5-0.268 1.304t-0.661 0.804q-0.036 0-0.304-0.054-0.911-0.268-1.616-1t-1.089-1.688-0.58-1.929-0.196-1.902z"></path>
811</symbol>
812<symbol id="icon-periscope" viewBox="0 0 24 28">
813<path class="path1" d="M12.285,1C6.696,1,2.277,5.643,2.277,11.243c0,5.851,7.77,14.578,10.007,14.578c1.959,0,9.729-8.728,9.729-14.578 C22.015,5.643,17.596,1,12.285,1z M12.317,16.551c-3.473,0-6.152-2.611-6.152-5.664c0-1.292,0.39-2.472,1.065-3.438 c0.206,1.084,1.18,1.906,2.352,1.906c1.322,0,2.393-1.043,2.393-2.333c0-0.832-0.447-1.561-1.119-1.975 c0.467-0.105,0.955-0.161,1.46-0.161c3.133,0,5.81,2.611,5.81,5.998C18.126,13.94,15.449,16.551,12.317,16.551z"></path>
814</symbol>
815<symbol id="icon-get-pocket" viewBox="0 0 31 32">
816<path class="path1" d="M27.946 2.286q1.161 0 1.964 0.813t0.804 1.973v9.268q0 3.143-1.214 6t-3.259 4.911-4.893 3.259-5.973 1.205q-3.143 0-5.991-1.205t-4.902-3.259-3.268-4.911-1.214-6v-9.268q0-1.143 0.821-1.964t1.964-0.821h25.161zM15.375 21.286q0.839 0 1.464-0.589l7.214-6.929q0.661-0.625 0.661-1.518 0-0.875-0.616-1.491t-1.491-0.616q-0.839 0-1.464 0.589l-5.768 5.536-5.768-5.536q-0.625-0.589-1.446-0.589-0.875 0-1.491 0.616t-0.616 1.491q0 0.911 0.643 1.518l7.232 6.929q0.589 0.589 1.446 0.589z"></path>
817</symbol>
818<symbol id="icon-vimeo" viewBox="0 0 32 32">
819<path class="path1" d="M30.518 9.25q-0.179 4.214-5.929 11.625-5.946 7.696-10.036 7.696-2.536 0-4.286-4.696-0.786-2.857-2.357-8.607-1.286-4.679-2.804-4.679-0.321 0-2.268 1.357l-1.375-1.75q0.429-0.375 1.929-1.723t2.321-2.063q2.786-2.464 4.304-2.607 1.696-0.161 2.732 0.991t1.446 3.634q0.786 5.125 1.179 6.661 0.982 4.446 2.143 4.446 0.911 0 2.75-2.875 1.804-2.875 1.946-4.393 0.232-2.482-1.946-2.482-1.018 0-2.161 0.464 2.143-7.018 8.196-6.821 4.482 0.143 4.214 5.821z"></path>
820</symbol>
821<symbol id="icon-reddit-alien" viewBox="0 0 32 32">
822<path class="path1" d="M32 15.107q0 1.036-0.527 1.884t-1.42 1.295q0.214 0.821 0.214 1.714 0 2.768-1.902 5.125t-5.188 3.723-7.143 1.366-7.134-1.366-5.179-3.723-1.902-5.125q0-0.839 0.196-1.679-0.911-0.446-1.464-1.313t-0.554-1.902q0-1.464 1.036-2.509t2.518-1.045q1.518 0 2.589 1.125 3.893-2.714 9.196-2.893l2.071-9.304q0.054-0.232 0.268-0.375t0.464-0.089l6.589 1.446q0.321-0.661 0.964-1.063t1.411-0.402q1.107 0 1.893 0.777t0.786 1.884-0.786 1.893-1.893 0.786-1.884-0.777-0.777-1.884l-5.964-1.321-1.857 8.429q5.357 0.161 9.268 2.857 1.036-1.089 2.554-1.089 1.482 0 2.518 1.045t1.036 2.509zM7.464 18.661q0 1.107 0.777 1.893t1.884 0.786 1.893-0.786 0.786-1.893-0.786-1.884-1.893-0.777q-1.089 0-1.875 0.786t-0.786 1.875zM21.929 25q0.196-0.196 0.196-0.464t-0.196-0.464q-0.179-0.179-0.446-0.179t-0.464 0.179q-0.732 0.75-2.161 1.107t-2.857 0.357-2.857-0.357-2.161-1.107q-0.196-0.179-0.464-0.179t-0.446 0.179q-0.196 0.179-0.196 0.455t0.196 0.473q0.768 0.768 2.116 1.214t2.188 0.527 1.625 0.080 1.625-0.080 2.188-0.527 2.116-1.214zM21.875 21.339q1.107 0 1.884-0.786t0.777-1.893q0-1.089-0.786-1.875t-1.875-0.786q-1.107 0-1.893 0.777t-0.786 1.884 0.786 1.893 1.893 0.786z"></path>
823</symbol>
824<symbol id="icon-whatsapp" viewBox="0 0 32 32">
825<path d="M15.968 2.003a14.03 13.978 0 0 0-14.03 13.978 14.03 13.978 0 0 0 2.132 7.391L1.938 29.96l6.745-2.052a14.03 13.978 0 0 0 7.285 2.052 14.03 13.978 0 0 0 14.03-13.978 14.03 13.978 0 0 0-14.03-13.978z" stroke-width=".2000562"/>
826<path d="M10.454 8.236a2.57 3.401 51.533 0 0-1.475 3.184v.015c.01 2.04 4.045 10.076 10.017 12.688l.017-.013a2.57 3.401 51.533 0 0 3.454-.706 2.57 3.401 51.533 0 0 1.064-4.129 2.57 3.401 51.533 0 0-4.262.103 2.57 3.401 51.533 0 0-.505.473c-1.346-.639-2.952-1.463-4.168-2.98-.771-.962-1.257-2.732-1.549-4.206a2.57 3.401 51.533 0 0 .605-.403 2.57 3.401 51.533 0 0 1.064-4.129 2.57 3.401 51.533 0 0-4.262.103z" stroke-width=".372"/>
827</symbol>
828<symbol id="icon-telegram" viewBox="0 0 32 32">
829<path d="M30.8,2.2L0.6,13.9c-0.8,0.3-0.7,1.3,0,1.6l7.4,2.8l2.9,9.2c0.2,0.6,0.9,0.8,1.4,0.4l4.1-3.4 c0.4-0.4,1-0.4,1.5,0l7.4,5.4c0.5,0.4,1.2,0.1,1.4-0.5L32,3.2C32.1,2.5,31.4,1.9,30.8,2.2z M25,8.3l-11.9,11 c-0.4,0.4-0.7,0.9-0.8,1.5l-0.4,3c-0.1,0.4-0.6,0.4-0.7,0.1l-1.6-5.5c-0.2-0.6,0.1-1.3,0.6-1.6l14.4-8.9C25,7.7,25.3,8.1,25,8.3z"/>
830</symbol>
831<symbol id="icon-hashtag" viewBox="0 0 32 32">
832<path class="path1" d="M17.696 18.286l1.143-4.571h-4.536l-1.143 4.571h4.536zM31.411 9.286l-1 4q-0.125 0.429-0.554 0.429h-5.839l-1.143 4.571h5.554q0.268 0 0.446 0.214 0.179 0.25 0.107 0.5l-1 4q-0.089 0.429-0.554 0.429h-5.839l-1.446 5.857q-0.125 0.429-0.554 0.429h-4q-0.286 0-0.464-0.214-0.161-0.214-0.107-0.5l1.393-5.571h-4.536l-1.446 5.857q-0.125 0.429-0.554 0.429h-4.018q-0.268 0-0.446-0.214-0.161-0.214-0.107-0.5l1.393-5.571h-5.554q-0.268 0-0.446-0.214-0.161-0.214-0.107-0.5l1-4q0.125-0.429 0.554-0.429h5.839l1.143-4.571h-5.554q-0.268 0-0.446-0.214-0.179-0.25-0.107-0.5l1-4q0.089-0.429 0.554-0.429h5.839l1.446-5.857q0.125-0.429 0.571-0.429h4q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5l-1.393 5.571h4.536l1.446-5.857q0.125-0.429 0.571-0.429h4q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5l-1.393 5.571h5.554q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5z"></path>
833</symbol>
834<symbol id="icon-chain" viewBox="0 0 30 32">
835<path class="path1" d="M26 21.714q0-0.714-0.5-1.214l-3.714-3.714q-0.5-0.5-1.214-0.5-0.75 0-1.286 0.571 0.054 0.054 0.339 0.33t0.384 0.384 0.268 0.339 0.232 0.455 0.063 0.491q0 0.714-0.5 1.214t-1.214 0.5q-0.268 0-0.491-0.063t-0.455-0.232-0.339-0.268-0.384-0.384-0.33-0.339q-0.589 0.554-0.589 1.304 0 0.714 0.5 1.214l3.679 3.696q0.482 0.482 1.214 0.482 0.714 0 1.214-0.464l2.625-2.607q0.5-0.5 0.5-1.196zM13.446 9.125q0-0.714-0.5-1.214l-3.679-3.696q-0.5-0.5-1.214-0.5-0.696 0-1.214 0.482l-2.625 2.607q-0.5 0.5-0.5 1.196 0 0.714 0.5 1.214l3.714 3.714q0.482 0.482 1.214 0.482 0.75 0 1.286-0.554-0.054-0.054-0.339-0.33t-0.384-0.384-0.268-0.339-0.232-0.455-0.063-0.491q0-0.714 0.5-1.214t1.214-0.5q0.268 0 0.491 0.063t0.455 0.232 0.339 0.268 0.384 0.384 0.33 0.339q0.589-0.554 0.589-1.304zM29.429 21.714q0 2.143-1.518 3.625l-2.625 2.607q-1.482 1.482-3.625 1.482-2.161 0-3.643-1.518l-3.679-3.696q-1.482-1.482-1.482-3.625 0-2.196 1.571-3.732l-1.571-1.571q-1.536 1.571-3.714 1.571-2.143 0-3.643-1.5l-3.714-3.714q-1.5-1.5-1.5-3.643t1.518-3.625l2.625-2.607q1.482-1.482 3.625-1.482 2.161 0 3.643 1.518l3.679 3.696q1.482 1.482 1.482 3.625 0 2.196-1.571 3.732l1.571 1.571q1.536-1.571 3.714-1.571 2.143 0 3.643 1.5l3.714 3.714q1.5 1.5 1.5 3.643z"></path>
836</symbol>
837<symbol id="icon-thumb-tack" viewBox="0 0 21 32">
838<path class="path1" d="M8.571 15.429v-8q0-0.25-0.161-0.411t-0.411-0.161-0.411 0.161-0.161 0.411v8q0 0.25 0.161 0.411t0.411 0.161 0.411-0.161 0.161-0.411zM20.571 21.714q0 0.464-0.339 0.804t-0.804 0.339h-7.661l-0.911 8.625q-0.036 0.214-0.188 0.366t-0.366 0.152h-0.018q-0.482 0-0.571-0.482l-1.357-8.661h-7.214q-0.464 0-0.804-0.339t-0.339-0.804q0-2.196 1.402-3.955t3.17-1.759v-9.143q-0.929 0-1.607-0.679t-0.679-1.607 0.679-1.607 1.607-0.679h11.429q0.929 0 1.607 0.679t0.679 1.607-0.679 1.607-1.607 0.679v9.143q1.768 0 3.17 1.759t1.402 3.955z"></path>
839</symbol>
840<symbol id="icon-arrow-left" viewBox="0 0 43 32">
841<path class="path1" d="M42.311 14.044c-0.178-0.178-0.533-0.356-0.711-0.356h-33.778l10.311-10.489c0.178-0.178 0.356-0.533 0.356-0.711 0-0.356-0.178-0.533-0.356-0.711l-1.6-1.422c-0.356-0.178-0.533-0.356-0.889-0.356s-0.533 0.178-0.711 0.356l-14.578 14.933c-0.178 0.178-0.356 0.533-0.356 0.711s0.178 0.533 0.356 0.711l14.756 14.933c0 0.178 0.356 0.356 0.533 0.356s0.533-0.178 0.711-0.356l1.6-1.6c0.178-0.178 0.356-0.533 0.356-0.711s-0.178-0.533-0.356-0.711l-10.311-10.489h33.778c0.178 0 0.533-0.178 0.711-0.356 0.356-0.178 0.533-0.356 0.533-0.711v-2.133c0-0.356-0.178-0.711-0.356-0.889z"></path>
842</symbol>
843<symbol id="icon-arrow-right" viewBox="0 0 43 32">
844<path class="path1" d="M0.356 17.956c0.178 0.178 0.533 0.356 0.711 0.356h33.778l-10.311 10.489c-0.178 0.178-0.356 0.533-0.356 0.711 0 0.356 0.178 0.533 0.356 0.711l1.6 1.6c0.178 0.178 0.533 0.356 0.711 0.356s0.533-0.178 0.711-0.356l14.756-14.933c0.178-0.356 0.356-0.711 0.356-0.889s-0.178-0.533-0.356-0.711l-14.756-14.933c0-0.178-0.356-0.356-0.533-0.356s-0.533 0.178-0.711 0.356l-1.6 1.6c-0.178 0.178-0.356 0.533-0.356 0.711s0.178 0.533 0.356 0.711l10.311 10.489h-33.778c-0.178 0-0.533 0.178-0.711 0.356-0.356 0.178-0.533 0.356-0.533 0.711v2.311c0 0.178 0.178 0.533 0.356 0.711z"></path>
845</symbol>
846<symbol id="icon-play" viewBox="0 0 22 28">
847<path d="M21.625 14.484l-20.75 11.531c-0.484 0.266-0.875 0.031-0.875-0.516v-23c0-0.547 0.391-0.781 0.875-0.516l20.75 11.531c0.484 0.266 0.484 0.703 0 0.969z"></path>
848</symbol>
849<symbol id="icon-pause" viewBox="0 0 24 28">
850<path d="M24 3v22c0 0.547-0.453 1-1 1h-8c-0.547 0-1-0.453-1-1v-22c0-0.547 0.453-1 1-1h8c0.547 0 1 0.453 1 1zM10 3v22c0 0.547-0.453 1-1 1h-8c-0.547 0-1-0.453-1-1v-22c0-0.547 0.453-1 1-1h8c0.547 0 1 0.453 1 1z"></path>
851</symbol>
852</defs>
853</svg>
854
855</body>
856</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.