مقدمه
امروزه داکر (Docker) مورد توجه زیادی قرار گرفته است. اما داکر دقیقاً چیست و آیا برای همه توسعهدهندگان مفید است؟ چگونه میتوان از داکر در محیطهای مختلف مانند توسعه (ِDevelopment)، پیشتولید (Staging) و تولید (Production) استفاده کرد. به طور کلی، داکر تاثیر قابل توجهی بر عملیات توسعه میگذارد. اما چگونه؟ تمام این سوالات به همراه مفاهیم کلیدی و ضروری برای درک عملکرد و استفاده از داکر در این مقاله توضیح داده شده است.
داکر چیست؟
تصویر یا همان image در داکر چیست؟
- یک تصویر داکر توسط دنبالهای از دستورات نوشته شده در فایلی به نام Dockerfile ایجاد میشود.
- وقتی این فایل داکر با استفاده از دستور docker اجرا میشود، یک تصویر داکر با نام مشخص ایجاد میکند.
- هنگامی که این تصویر با دستور "docker run" اجرا می شود، به خودی خود هر برنامه یا سرویسی را که باید در اجرای آن شروع کند، شروع میکند.
مراحل ایجاد تصویر فقط خواندنی از روی فایل داکر، و ایجاد و اجرای ظرف اجرایی از روی تصویر
کانتینر چیست؟
کانتینر داکر یک محیط زمان اجرا مجازی است که در توسعه برنامه، ایجاد، اجرا و استقرار برنامههایی که از سختافزار اصلی جدا شدهاند استفاده میشود. کانتینر میتواند از یک ماشین استفاده کند، هسته آن را به اشتراک بگذارد و سیستم عامل را مجازی کند تا فرآیندهای ایزوله را اجرا کند. کانتینرها سبک وزن هستند.
تفاوت کانتینر و تصویر
تفاوت کانتینر با ماشین مجازی چیست؟
در این قسمت تفاوتهای این دو فناوری از چند جهت مورد بررسی قرار گرفته است:
سیستم عامل:
- در داکر کانتینرها هسته سیستم عامل میزبان را به اشتراک میگذارند و بارهای کاری متعدد میتوانند روی یک سیستم عامل اجرا شوند.
- در ماشین مجازی هسته میزبان به اشتراک گذاشته نمیشود و هر بار کاری به یک سیستم عامل کامل یا فوقناظر نیاز دارد. (برای مطالعه بیشتر درباره فوقناظر یا هاپیروایزر کلیک کنید)
کارایی:
- کانتینرهای داکر کارایی بالایی دارند زیرا از همان سیستم عامل بدون نرمافزار اضافی (مانند فوقناظر) استفاده میکنند و به سرعت راهاندازی میشوند.
- از آنجایی که ماشین مجازی از یک سیستم عامل جداگانه استفاده میکند. باعث استفاده بیشتر از منابع میشود. همچنین ماشینهای مجازی به سرعت راهاندازی نمیشوند و منجر به کارایی پایین میشوند.
حملپذیری:
- با کانتینرها، کاربران میتوانند یک برنامه کاربردی ایجاد کرده و آن را در یک تصویر کانتینر ذخیره کنند. سپس میتوان آن را در هر محیط میزبان اجرا کرد. به علاوه کانتینر از ماشین مجازی کوچکتر است، در نتیجه فرآیند انتقال فایلها در سیستم میزبان راحتتر است.
- ماشینهای مجازی هاب مرکزی (hub) ندارند و برای ذخیره دادهها به فضای حافظه بیشتری نیاز دارند.
- در حین انتقال فایلها، ماشینهای مجازی باید نسخهای از سیستمعامل و وابستگیهای آن داشته باشند که به این دلیل اندازه تصویر افزایش مییابد و به یک فرآیند خستهکننده برای اشتراکگذاری داده تبدیل میشود.
سرعت:
- برنامهها در کانتینر بدون تاخیر شروع می شود؛ زیرا سیستم عامل از قبل آماده و در حال اجرا است. کانتینرها در اصل برای صرفهجویی در زمان در فرآیند استقرار یک برنامه طراحی شدهاند.
- در ماشین مجازی، زمان بسیار بیشتری نسبت به یک کانتینر طول میکشد تا برنامهها را اجرا کند. ماشینهای مجازی باید کل سیستم عامل را راهاندازی کنند، که باعث میشود فرآیند بوت کامل شود.
از تفاوتهای دیگر نیز میتوان به موارد زیر اشاره کرد:
- اجرای کانتینرها با دستور توقف پایان مییابد. ولی، ماشینهای مجازی همیشه در حال اجرا هستند.
- کانتینر اسنپشاتهای (snapshot) زیادی دارد زیرا تصاویر را بر روی لایهها میسازد. ولی، ماشین مجازی اسنپشاتهای زیادی نمیتواند داشته باشد.
- به دلیل سبک بودن، میتوان تعداد زیادی کانتینر را روی یک سیستم اجرا کرد. در مقابل، فقط میتوان تعداد محدودی ماشین مجازی را روی یک سیستم اجرا کرد.
[4] تفاوت کانتینر و ماشین مجازی
کاربردهای داکر
-
کانتینر فرآیندهای DevOps را ساده میکند و مدیریت کارآمد برنامههای کانتینری را تضمین میکند.
-
محیطهای تحقیقاتی تکرارپذیر در علم داده، آزمایش و تجزیه و تحلیل سازگار و قابل اعتماد را ممکن میسازد.
-
استقرار چند-ابری (multi-cloud) با داکر، استقرار و مدیریت یکپارچه را در چندین بستر ابری تسهیل میکند.
-
برنامههای کاربردی ابری از قابلیت حملپذیری و مقیاسپذیری داکر بهره میبرند که آنها را برای یکپارچهسازی ابر هیبریدی مناسب میکند.
جمعبندی
سوالات متداول
-
داکر چیست و چگونه در توسعه نرمافزار استفاده می شود؟
- داکر هاب چیست (docker hub)؟
- تفاوت داکر با کوبرنتیز چیست؟
- چه کسانی از داکر استفاده میکنند؟
منابع
https://aws.amazon.com/compare/the-difference-between-docker-images-and-containers
https://www.edureka.co/blog/docker-tutorial
https://www.javatpoint.com/docker-tutorial
https://www.atlassian.com/microservices/cloud-computing/containers-vs-vms
https://hackernoon.com/docker-images-kicking-the-tires-of-docker-scout


![[4] تفاوت کانتینر و ماشین مجازی containerVSvirtualmachine](/images/2024/02/08/cntinr.png)
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
ثبت نظر