داکر چیست؟
02
شهریور

داکر Docker چیست؟

به طور کلی داکر چیست؟ آیا داکر در روند کاری به ما کمک می کند؟ محبوبیت داکر از کجا شروع شد؟ دلایلی که آنقدر داکر به موفقیت رسیده است، کدام اند؟ در این بلاگ در تلاش هستیم روی مبحث داکر به صورت کلی مانور دهیم. قرار است با کلمات و اصطلاحات کلیدی در داکر آشنا شویم و مهم تر از آن آیا داکر با ماشین های مجازی فرق می کند؟ چه تفاوت هایی بین داکر و ماشین های مجازی وجود دارد؟ در ادامه این بلاگ ما را همراهی و هر سوال یا انتقادی را در بخش دیدگاه برای ما نوشته و ارسال کنید.
امروزه در انواع کسب و کار ها، صحبت داکر (Docker) را دم به دقیقه در محافل فناوری می شنویم. به احتمال فراوان، مبحث و تعریف های داکر را از گوشه و کنار به گوش شما نیز رسیده است.

خلاصه کوتاهی از تاریخچه داکر

چندین سال قبل، حدود 5 سال پیش شخصی به نام سالامان هایکز (Solomon Hykes)، مکانیسم و ساز و کاری را راه اندازی کرد به نام داکر که به طور کلی هدف اصلی از این کار اعامل راحت تر و بهتر با کانتینر ها (Containers) بود. در مجموع زمانی نگذشت که این ایده با موفقیت روبرو شد و در سال 2014 پس از انتشار و به اشتراک گذاری داکر نسخه 1.0 شاهد افزایش و بالا رفتن محبوبیت آن بودیم. در نتیجه اکثر شرکت ها و موسسات یکی پس از دیگری اپلیکیشن های تحت سرور را به جای ماشین های مجازی در بستر داکر راه اندازی کردند. نکته جالبی که وجود دارد این است که، در سال 2014 چندین بانک بزرگ در زمانی که داکر هنوز در نسخه 1.0 به سر می برد از چنین فناوری منحصر به فرد کمک گرفتند. این اتفاقات و به قولی ترکاندن فناوری داکر نشان می داد که این فناوری نوپا و جدید که در نسخه اولیه قرار دارد، از امنیت بالا و فراوانی برخوردار است.
این روزها Docker and Moby که به عنوان مجموعه بالاسری داکر شناخته می‌شوند، مخاطبین بسیار زیاد و بالایی جذب کرده و بنا بر گزارش داکر بیشتر از ۳.۵ اپلیکیشن در کانتینر ها از طریق فناوری داکر قرار دارند و بیشتر از ۳.۷ میلیارد اپلیکیشن هم از این طریق دانلود شده است. نکته جالبی که باید بدانید این است که بزرگانی مانند ردهت، کنونیکال، اوراکل و مایکروسافت نیز به استفاده از داکر گرایش پیدا کرده‌ اند و یه طور کلی به سمت داکر و سود بردن از آن کشیده شده اند و در حال حاضر هم تقریباً تمام کمپانی‌های حاضر در بستر رایانش ابری، به نوعی از داکر استفاده می‌کنند.

اما داکر (Docker) چیست؟

داکر یک اپلیکیشن و پلتفرم متن باز است که بر مبنای سیستم عامل لینوکس راه اندازی شده است. البته که در پاسخ به سوال داکر چیست، خیلی ساده و روان می توان گفت، ابزاری است که می تواند فرایند ایجاد، پیاده سازی و اجرای برنامه ها را با استفاده از Container ها بسیار ساده کند. البته می توان با زبان دیگری به سوال داکر چیست پاسخ دهیم که می توان گفت، داکر (Docker) نوعی ماشین مجازی است و امکاناتی را برای برنامه ها فراهم می کند تا از یک Kernel واحد لینوکس بهره و استفاده کرده و از ابزار ها و امکاناتی بهره مند شوند که در سیستم عامل میزبان ارائه نشده است. در نظر داشته باشید که با این ترتیب می توانند به صورت مستقل از پیش نیاز ها و توانایی و امکانات مازاد بهره برداری کنند. این روند باعث می شود که سرعت و عملکرد برنامه بهبود قابل ملاحظه ای پیدا کند و حجم آن نیز بسیار کاهش یابد.
در حقیقت و به طور کلی هدف این است که بدون نگرانی از تنظیمات و وابستگی ‌های یک اپلیکیشن (Application) خاص در پلتفرم ‌های دیگر، آن برنامه در هر محیطی اجرا شود. پس اگر برنامه نویسی می کنید حتما استفاده از داکر را به شما توصیه می کنیم. در مجموع داکر که در بالا به آن اشاره کردیم، وظیفه مدیریت کانتینر ها را بر عهده دارد و باید گفت که بیشتر شبیه یک ماشین مجازی عمل می کند.

کانتینر (Container) چیست؟

کانتینر ها (Containers) روی هم رفته مقابل ماشین های مجازی قرار دارند که آن ها می توانند جایگزین بسیار بهتر و مناسبی برای ماشین های مجازی باشند. کانتینر ها محیط‌ های اجرایی را جدا کرده و هسته سیستم عامل را به اشتراک می‌گذارد. کانتینر ها نسبت به ماشین‌ های مجازی از منابع کمتری استفاده می‌کنند و همچنین خیلی سریع قابلیت اجرا پیدا می‌کنند که بسیاری کاربردی است. داکر (Docker) فناوری و امکانی را فراهم آورده است که پروسه ها و نرم افزار ها به صورت مجزا در محیط و پیرامون کاملا ایزواه ای بر روی کرنا لینوکس راه اندازی شوند؛ به این محیط و پیرامون ایزوله ای، کانتینر (Container) می گویند. کانتینر این امکان را برای برنامه‌ نویسان و توسعه ‌دهندگان اپلیکیشن ‌ها فراهم می‌کند که یک برنامه را با تمام ماژول‌ ها و کامپوننت ‌های وابسته آن (مانند کتابخانه‌ها، توابع و …) یکی کرده و به صورت یک پکیج درآورند تا آن برنامه تولید شده در پلتفرم‌ها و سیستم ‌های مختلف بدون مشکل اجرا شود.
به طور کلی و روی هم رفته می توان کانتینر ها را به 3 بخش تقسیم کرد که عبارت اند از:
_ سازنده (Builder) = فناوری و اعمال مورد استفاده برای ساخت کانتینر
_ موتور (Engine) = فناوری و اعمال مورد استفاده برای تشکیل و راه اندازی کانتینر
_ تنظیم (Orchestration) = فناوری و اعمال موزد استفاده برای تنظیمات و مدیریت کانتینر

کانتینر داکر چیست؟

در حالیکه مفهوم Containerازت مدت ها و زنان های قبل در حوزه آی تی (IT) مطرح بوده است، اما معرفی و ارائه داکر به عنوان یک پروژه متن باز سبب شد استفاده و بهره گیری از Container ها دوباره فراگیر و بالا رود. در نظر داشته باشید که کانتینر (Container) این امکان و فرصت را برای برای توسعه دهندگان فراهم می کند تا بسته از برنامه های خود همراه تمامی قسمت های مورد نیاز آن ایجادا کرده و آن را در قالب یک بسته واحد ارسال کنند. با وجود کانتینر ها، توسعه دهندگان می‌توانند اطمینان داشته باشند که برنامه داکر در هر ماشین مجازی، با سیستم عامل لینوکس بدون توجه به تنظیمات سفارشی قابل اجرا است و می توان از آن استفاده کرد. ماشین جدید می‌تواند تنظیماتی متفاوت با ماشینی که برنامه روی آن طراحی شده، داشته باشد. برای ساخت یک برنامه داکر و همچنین کار با داکر باید از کامپوننت ‌های مختلف استفاده کنیم. در ادامه این بلاگ قرار است با انواع کامپوننت ‌ها آشنا و آن ها را معرفی و بررسی کنیم.

معرفی و بررسی کامپوننت ها در داکر

معرفی و بررسی کامپوننت ها در داکر

زمانی که کار نوشتن داکر فایل تمام شد، یک قابلیت به اسم Docker Build را فراخوانی می‌کنید که وظیفه دارد یک Image بر اساس محتویات Dockerfile شما بسازد. Docker Image یک فایل قابل حمل و شامل یک سری دستورالعمل است که مشخص می‌کند Container کدام کامپوننت ‌های نرم افزاری را اجرا کند و اینکه چگونه و چطور آن را ارائه و نمایش دهد.

Docker file

در نظر داشته باشید که هر کانتینر داکر به وسیله یک فایل داکر شروع به کار می‌کند. در پاسخ به سوال داکر فایل چیست، به سادگی می‌ توان گفت Dockerfile ها در واقع فایل ‌های تنظیمات داکر هستند که با استفاده از آن‌ ها می‌توانیم به داکر بگوییم که یک container را چگونه بالا بیاورد و تنظیم کند. به عنوان مثال، چه سرویس‌ هایی را فعال کند و چطور به آن ‌ها اجازه دسترسی دهد. در واقع داکر فایل مشخص می ‌کند که پشت Container ما چه سیستم عاملی قرار بگیرد، همینطور از چه زبان ها، متغیر های محلی، پورت ‌های شبکه یا غیره استفاده شود. و مهم‌ تر از همه اینکه مشخص کند Container ما بعد از اینکه واقعا اجرا شد قرار است چه کاری انجام دهد.

Docker Run

در نظر داشته باشید که ویژگی Docker run در واقع نوعی دستور است که کانتینر را راه‌ اندازی می‌کند. هر Container یک نمونه یا مثال از Image است و ماهیت کانتینر به صورت موقتی است. با این حال می ‌توان آن‌ها را متوقف کرد یا مجددا راه‌اندازی نمود. هر Image به شرط وجود نام منحصر به فرد، می ‌تواند تعداد زیادی کانتینر داشته باشد.

Docker Hub

توجه کنید که قابلیت Docker Hub یک مخزن Saas برای مدیریت و به اشتراک گذاری کانتینر ها است. در این بخش و قسمت می ‌توانید تصاویر رسمی داکر که معمولا به صورت متن باز هستند را پیدا کنید.

Docker Engine

در نظر داشته باشید که به طور کلی این بخش، هسته اصلی داکر به حساب می‌آید. در واقع وقتی کسی درباره داکر صحبت می‌کند، دارد درباره Docker Engine صحبت می کند. این ویژگی در دو نسخه Enterprise و Community ارائه می ‌شود. نسخه Community به صورت متن باز و کاملا رایگان است، در حالی که نسخه Enterprise، با ویژگی ‌ها و قابلیت ‌های اضافه، برای هر Node سالانه نزدیک به 1500 دلار هزینه دارد.

طرز کار و مکانیزم عملکرد  داگر چیست؟

داکر (Docker) یک لایه واسطه بین سیستم عامل اصلی و بسته نرم افزاری ایجاد می ‌کند. در واقع با استفاده از این لایه، نرم افزار ها را از یکدیگر تفکیک می‌کند. در سیستم عامل لینوکس قابلیت ‌هایی برای تفکیک و ایزوله کردن منابع وجود دارد که هم هسته سیستم عامل و هم گروه‌ ها و منابع سخت افزاری و نرم افزاری سیستم عامل را به صورت ایزوله و تفکیک شده در اختیار نرم افزار ها قرار می‌دهد، که سیستم داکر نیز از آن ها استفاده می‌کند. به عنوان مثال، قابلیت ‌هایی مانند cgroups و kernel namespaces از جمله مواردی هستند که Docker از آن ها استفاده می‌کند.

چرا اینقدر داکر محبوب است؟

چرا اینقدر داکر محبوب است؟

روی هم رفته داکر (Docker) بین تمامی توسعه دهندگان محبوب شده است و البته باید این نکته نیز اشاره کرد که استفاده از داکر، مزایایی را برای توسعه دهندگان به همراه دارد که قرار است در این بخش به آن ها بپردازیم.

_ محیطی مناسب و ایزوله و در کل پایدار
با استفاده از کانتینر، توسعه‌دهنده ‌ها می‌توانند محیط‌ هایی ایزوله و قایل پیش‌ بینی را ایجاد کنند که از دیگر برنامه‌ ها جدا شده ‌اند. بدون در نظر گرفتن اینکه برنامه در کجا مستقر شده است، همه‌چیز پایدار است و این موضوع منجر به افزایش بهره ‌وری می‌شود. حالا چگونه باعث بهره وری می شود؟ در واقع شما با کاهش زمانی که برای دیباگ کردن می ‌گذارید، زمان بیشتری برای لانچ کردن فیچر های جدید خواهید داشت.

_ استقرار سریع و هزینه مناسب
کانتینر های مجهز به داکر، از نظر کاهش زمان استقرار زبانزد هستند و با هر استانداری که حساب کنید، این کاهش زمان (تا چند ثانیه) یک شاهکار و عملکرد بسیار فوق العاده ای به حساب می آید.

_ پرتابل کرن و قابلیت ارائه و اجرا در هر مکان
اکر ایمیج ‌ها محدودیت محیطی ندارند و این موضوع باعث می ‌شود که هرگونه استقراری، پایدار، پرتابل (قابل حمل) و مقیاس‌ پذیر باشد. به علاوه، کانتینر ها می‌توانند در هر مکانی، بر اساس سیستم ‌عامل (Win ،Mac OS ،Linux ،VMs ،On-prem، در Public Cloud) اجرا شوند؛ که این ویژگی مهمی برای توسعه و استقرار است.

_ قابلیت تکرار پذیری
اجرای داکر در هر سیستمی که بتواند آن را اجرا کند، تضمین شده است. در ضمن مشخصات دقیق Container در فایل Dockerfile ذخیره می ‌شود. با توزیع این فایل در بین اعضای تیم، یک سازمان می ‌تواند تضمین کند که تمام فایل ‌های image ساخته شده با همان Dockerfile یکسان کار می کنند. علاوه‌ بر این، داشتن محیطی ثابت و مستند، باعث می ‌شود که track کردن نرم افزار شما و شناسایی مشکلات نیز آسان ‌تر شود.

_ پرتابل بودن داکر
داکر توسعه‌ دهندگان را قادر می‌سازد تا اپلیکیشن های خود را راحت و سریع با حجم کم تری به صورت قابل حمل و پرتابل در یک کانتینر قرار دهند. این اپلیکیشن ‌ها به صورت مجازی از هر جایی قابل اجرا هستند. این فرآیند از طریق مجزا کردن کد ها در داخل یک کانتینر واحد انجام می‌شود. کاملاً مشخص است چنین کاری بهینه ‌سازی و آپدیت برنامه را ساده ‌تر می‌ کند.

_ قابلیت خودکار سازی و اتوماسیون
کد زدن با زیر ساخت و پیکر بندی تکرار پذیر، سرعت توسعه شما را چندین برابر می‌ کند. از طرف دیگر، تصاویر داکر (Docker Images) اغلب حجم کمی دارند، پس در نتیجه تحویل استقرار آن‌ ها در کانتینر برنامه ‌های جدید در مدت زمان کمی انجام می‌ گیرد.

مزیت دیگر تعمیر و نگهداری مستقیم است. هنگامی که یک برنامه وارد Container می‌ شود، از سایر برنامه‌ های در حال اجرا در داخل سیستم، جدا می ‌شود. به عبارت دیگر ، برنامه ‌ها با هم مخلوط نمی ‌شوند و به همین دلیل، تعمیر و نگهداری آن‌ها به طور قابل توجهی آسان ‌تر می ‌شود. با اتومات شدن فرایند ها، سرعت بیشتر و اشتباهات کم تری خواهید داشت.

_ انعطاف پذیری
در نظر داشته باشید که اگر در چرخۀ انتشار یک محصول، نیاز به ارتقاء پیدا کنید، داکر کار را برای‌ شما ساده ‌تر می ‌کند. در حال حاضر سوالی ایجاد می شود که چگونه داکر کار ها را برای شما آسان تر و ساده تر نی کند. شما می‌ توانید تغییرات مورد نیاز را در کانتینر های داکر ایجاد کرده، آن‌ها را تست کنید و در نهایت از کانتینر های جدید رونمایی کنید. در واقع این ویژگی کلیدی (یعنی انعطاف‌پذیری بالای داکر) به شما اجازه می ‌دهد که Image های جدیدی را ساخته، تست و منتشر کنید که در چندین سرور مختلف می‌توانند مستقر شوند. با داکر می ‌توان پروژه‌ را روی چند سرور جدید و مختلف آزمایش کرد و تمامی اعضای گروه بر روی یک پروژه‌ واحد با تنظیمات همانند قادر به همکاری هستند. این کار توسعه ‌دهندگان را قادر می ‌سازد تا نسخه ‌های جدید برنامه خود را به سرعت آزمایش کرده و از عملکرد صحیح آن اطمینان خاطر حاصل کنند.

_ مقیاس پذیری
متد کانتینر سازی در داکر، به شما اجازه می ‌دهد که برنامه را بخش ‌بندی کرده و سپس قسمت های مختلف آن را رفرش، پاکسازی یا تعمیر کنید؛ بدون آن که نیاز باشد کل برنامه متوقف شود! علاوه‌ بر این، با Docker می‌ توانید معماری برنامه را بر اساس فرایند های کوچکی که از طریق API با هم در ارتباط هستند بسازید. در حال حاضر فرض کنید توسعه‌ دهنده‌ ها با همکاری هم مشغول توسعه و حل مشکلات این فرایند ها باشند؛ به این ترتیب چرخه توسعه با سرعت پیش می‌ رود، مسائل راحت‌ تر حل می‌شوند و در زمان و هزینه صرفه‌جویی می شود.

_ امنیت
در نظر داشته باشید که جداسازی اجزای مختلف یک برنامه بزرگ در containerهای مختلف می‌ تواند مزایای امنیتی داشته باشد. برای مثال، اگر یک container در معرض خطر قرار بگیرد، بقیه‌ی اجزا امن باقی خواهند ماند. اما به یاد داشته باشید که داکر در بحث امنیت، ضعف ‌هایی هم دارد که در ادامه به آن می ‌پردازیم.

_ مدیریت محیط توسعه (Development Environment)
داکر مدیریت و نگهداری از ورژن ‌های مختلف را آسان می‌کند؛ برای مثال می توان ورژن‌ های مختلف یک وب ‌سایت که از nginx استفاده می ‌کند را ذخیره کرد. شما می‌ توانید برای هر یک از اهداف آزمایش، توسعه و تولید، یک container جداگانه در یک Linode داشته باشید و به راحتی هر یک را توسعه دهید.

_ یکپارچه سازی مداوم
داکر به عنوان جزئی از سری پیوسته integration با ابزارهایی مانند Travis ، Jenkins و Wercker کار می‌ کند. هر بار که کد اصلی نرم افزار شما به روز ‌شود، این ابزار می ‌تواند نسخه جدید را به عنوان یک Docker Image ذخیره کرده و برچسب‌ گذاری کند. سپس، آن را به Docker Hub منتقل کرده و deploy کند.

_ چابکی
کانتینر های داکر به راحتی در فضای رایانش ابری قرار می‌ گیرد و به نوعی طراحی شده که تقریبا تمامی اپلیکشن ‌هایی که از متدولوژی دواپس (DevOps) بهره می‌ گیرند با داکر تعامل داشته باشند. داکر محیطی لوکال را برای توسعه فراهم می‌کند که این محیط دقیقا عملکرد یک سرور را در اختیار توسعه ‌دهندگان قرار می ‌دهد. این امر برای روش توسعه CI/CD کاربرد زیادی دارد. از این طریق می ‌توان چندین محیط توسعه را از یک هاست مشخص با یک نرم ‌افزار، سیستم‌ عامل و تنظیمات واحد اجرا کرد.

_ استاندارد سازی کانتینر ها
داکر امکانات جدیدی در اختیار شرکت ‌ها قرار داد که پیش از این شاهد آن‌ها نبودیم. در این زمینه می ‌توان به ساده‌ سازی اجرا و استفاده آن اشاره کرد. از طرف دیگر داکر با کانتینر های دیگری از کنونیکال، گوگل و ردهت همکاری دارد و در نتیجه استاندارد سازی خوبی را برای کانتینر ها شاهد هستیم. همچنین داکر روی سیستم‌ عامل‌ های مختلف هم قابل اجراست و همین نکته آن را به یک محصول بی ‌رقیب تبدیل کرده است.

_ نظارت و مدیریت کانتینر ها
تمامی زیر ساخت‌ های IT نیازمند مدیریت و نظارت هستند و در همین راستا کانتینر ها نیز باید مانیتور شوند و در حالت کنترل ‌شده‌ ای قرار بگیرند. در غیر این‌ صورت مشخص نخواهد شد سرور چه برنامه ‌هایی را اجرا می‌کند. خوشبختانه از برنامه‌ های دواپس می ‌توان برای مانیتور کانتینر های داکر کمک گرفت؛ اما به این نکته نیز باید اشاره کرد که این برنامه ‌ها برای کانتینر ها بهینه‌ نشده ‌اند. اینجاست که باید سراغ ابزار های مدیریت و نظارت رایانش ابری را بگیرید. ابزارهایی مانند Docker Swarm, Kubernetes و Mesosphere در این زمینه گزینه ‌های خوبی به ‌نظر می ‌رسند و تجربه نشان داده است در بین این ابزار ها Kubernetes قابلیت ‌های بیشتری دارد.

در چه مواردی استفاده از داکر توصیه نمی شود؟ - Container

در چه مواردی استفاده از داکر توصیه نمی شود؟

در نظر داشته باشید که اگر برنامه شما پیچیده است و یا مدیر سیستم ندارید. برای پروژه های پیچیده و یا بزرگ image های آماده نیاز های شما را برطرف نمی کند و همچنین ساخت، ویرایش و مدیریت ارتباط میان کانتینر هایی که روی سرور های مختلف هستند، فرایندی زمان بر است. کارایی، امری ضروری برای برنامه شما است. سرعت اجرای فرایند هایی که روی سیستم عامل اجرا می شوند بیشتر از سرعت اجرای فرایند هایی است که در داخل کانتینر ها اجرا می شوند و اگر نیاز دارید تا بهترین کارایی ممکن را دریافت کنید استفاده از داکر توصیه نمی شود.

داکر یک تکنولوژی نسبتا جدید است که هنوز در حال توسعه می باشد و برای دسترسی به ویژگی های جدید نیاز است تا نسخه داکر خود را به طور مرتب آپدیت و به روز رسانی کنید و همچنین ضمانتی برای این که نسخه جدید سازگار با نسخه قبلی باشد وجود نخواهد داشت. از آن‌جایی که Docker Container سیستم ‌عامل میزبان را به اشتراک می‌گذارد، اگر می‌ خواهید برنامه کاربردی مشابهی را در سیستم‌ عامل ‌های مختلف اجرا یا آزمایش کنید، به جای این روش، باید از ماشین ‌های مجازی استفاده کنید. در ادامه این بلاگ به تفاوت های بین داکر و ماشین های مجازی خواهیم پرداخت، پس با ما همراه باشید.

تفاوت کانتینر و ماشین های مجازی در چیست؟

کانتینر ها و ماشین های مجازی (Virtual machine) دارای تخصیص منابع و مزایای برابر و یکسانی هستند اما در نظر داشته باشید که هر کدام عملکرد متفاوتی دارند و عملکرد و کارایی آن ها یکسان نیست. کانتینر (Container)به جای سخت افزار، سیستم عامل را مجازی می کند و البته از طرف مقابل کانتینر قابل حمل و کارآمد تر از ماشین مجازی است. یک انتزاع در لایه اپلیکیشن است که کدهای نرم‌ افزار و وابستگی ‌های آن را با هم بسته ‌بندی می‌کند. توجه کنید که چندین Container می‌ توانند روی یک دستگاه اجرا شوند و هسته سیستم‌ عامل آن را با دیگر Container ها به اشتراک بگذارند که هر کدام به صورت فرایند های جداگانه در فضای کاربر اجرا می ‌شوند.

Containerها نسبت به ماشین های مجازی (Virtual machine) حجم کمتری اشغال می ‌کنند، که این ویژگی باعث می ‌شود بتوانند نرم‌افزار ‌های بیشتری را هندل کنند و به ماشین مجازی و سیستم ‌عامل ‌های کمتری احتیاج داشته باشند. ماشین ‌های مجازی (Virtual machine) نرم‌افزار هایی هستند که می ‌توانند از نظر سخت ‌افزاری و به صورت مجازی یک سرور را به چندین سرور تبدیل ‌کنند. هایپروایزر (hypervisor) به چندین ماشین مجازی اجازه می ‌دهد تا روی یک دستگاه اجرا شوند. هر ماشین مجازی شامل یک نسخه کامل از یک سیستم‌ عامل، اپلیکیشن، فایل ‌های دودویی لازم و کتابخانه ‌ها است که ده‌ ها گیگا بایت حافظه را اشغال می ‌کند. علاوه براین، بیشتر وقت ‌ها ماشین های مجازی بسیار کند تشکیل و راه‌ اندازی می ‌شوند.
سوال مهمی که بسیاری از کاربران از ادمین ها پرسیده اند این است که آیا زمان خروج کانتینر اطلاعاتم را از دست می دهم یا خیر! باید در پاسخ این سوال گفت که خیر، هر داده ‌ای که برنامه شما روی دیسک کانتینر می‌نویسد، تا زمانی که به صراحت کانتینر را حذف نکنید، در حافظه و داده آن حفظ می‌ شود. تمامی اطلاعات ذخیره‌ شده روی کانتینر پس از توقف کانتینر نیز باقی می‌ ماند.

در نتیجه
همان طور که در این بلاگ گفته شد، داکر یک ابزار اپن سورس با بازخورد و بازدهی بسیار بالا است مخصوصا برای طراحی در ساخت برنامه ها به دادا کانتینر می رسد و به کانیتنر ها کمک می کند. به طور کلی Container ها به یک برنامه نویس کمک می کنند تا پروژه خود را با تمام قسمت های آن به صورت یک بسته در آورد. یک برنامه نویس با وجود چنین تکنیکی، می تواند مطمئن باشد که پروژه اش در سیستم عامل های دیگر بدون نیاز به ابزار ها یا تنظیمات خاص، اجرا می شود.
در این بلاگ تلاش کردیم برای سوالاتی راجع به داکر و ماشین های مجازی، پاسخ های مناسبی را در اختیار شما قرار دهیم. البته که مکانیزم عملکرد این سیستم را نیز مورد بررسی و مطالعه قرار دهیم.