مرا به خاطر بسپار

داکر چیست؟

بازدید: 392 آخرین به‌روزرسانی: 16 خرداد 1403

مقدمه

امروزه داکر (Docker) مورد توجه زیادی قرار گرفته است. اما داکر دقیقاً چیست و آیا برای همه توسعه‌دهندگان مفید است؟ چگونه می‌توان از داکر در محیط‌های مختلف مانند توسعه (ِDevelopment)، پیش‌تولید (Staging) و تولید (Production) استفاده کرد. به طور کلی، داکر تاثیر قابل توجهی بر عملیات توسعه می‌گذارد. اما چگونه؟ تمام این سوالات به همراه مفاهیم کلیدی و ضروری برای درک عملکرد و استفاده از داکر در این مقاله توضیح داده شده است.

داکر چیست؟

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

تصویر یا همان image در داکر چیست؟

یک تصویر یک الگوی فقط خواندنی (read-only) با یک سیستم فایل لایه‌ای است. تصویر دارای فایل‌های لازم برای اجرای برنامه‌ای در یک سیستم عامل مانند اوبونتو یا ویندوز است؛ از جمله چارچوب برنامه، پایگاه داده، فایل‌هایی که از برنامه پشتیبانی می‌کنند، متغیرهای محیطی، تنظیمات امنیتی و موارد دیگر. می‌توانید تصویر را به‌عنوان طرحی در نظر بگیرید که برای راه‌اندازی و اجرای یک ظرف یا همان کانتینر استفاده می‌شود.
  • یک تصویر داکر توسط دنباله‌ای از دستورات نوشته شده در فایلی به نام Dockerfile ایجاد می‌شود.
  • وقتی این فایل داکر با استفاده از دستور docker اجرا می‌شود، یک تصویر داکر با نام مشخص ایجاد می‌کند.
  • هنگامی که این تصویر با دستور "docker run" اجرا می شود، به خودی خود هر برنامه یا سرویسی را که باید در اجرای آن شروع کند، شروع می‌کند.
تصاویر داکر مجددا قابل استفاده در هر میزبانی هستند. توسعه‌دهندگان می‌توانند لایه‌های تصویر ثابت را از یک پروژه گرفته و در پروژه دیگر استفاده کنند. این امر باعث صرفه‌جویی در زمان کاربر می‌شود، زیرا آن‌ها مجبور نیستند یک تصویر را از ابتدا بازسازی کنند.

مراحل ایجاد تصویر فقط خواندنی از روی فایل داکر، و ایجاد و اجرای ظرف اجرایی از روی تصویر

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

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

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

در جدول زیر تفاوت‌های اصلی کانتینر و تصویر ذکر شده است.

تفاوت کانتینر و تصویر

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

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

در این قسمت تفاوت‌های این دو فناوری از چند جهت مورد بررسی قرار گرفته است:

سیستم عامل:

  • در داکر کانتینرها هسته سیستم عامل میزبان را به اشتراک می‌گذارند و بارهای کاری متعدد می‌توانند روی یک سیستم عامل اجرا شوند.
  • در ماشین مجازی هسته میزبان به اشتراک گذاشته نمی‌شود و هر بار کاری به یک سیستم عامل کامل یا فوق‌ناظر نیاز دارد. (برای مطالعه بیشتر درباره فوق‌ناظر یا هاپیروایزر کلیک کنید)

کارایی:

  • کانتینرهای داکر کارایی بالایی دارند زیرا از همان سیستم عامل بدون نرم‌افزار اضافی (مانند فوق‌ناظر) استفاده می‌کنند و به سرعت راه‌اندازی می‌شوند.
  • از آنجایی که ماشین مجازی از یک سیستم عامل جداگانه استفاده می‌کند. باعث استفاده بیشتر از منابع می‌شود. همچنین ماشین‌های مجازی به سرعت راه‌اندازی نمی‌شوند و منجر به کارایی پایین می‌شوند.

حمل‌پذیری:

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

سرعت:

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

از تفاوت‌های دیگر نیز می‌توان به موارد زیر اشاره کرد:

  • اجرای کانتینرها با دستور توقف پایان می‌یابد. ولی، ماشین‌های مجازی همیشه در حال اجرا هستند.
  • کانتینر اسنپ‌شات‌های (snapshot) زیادی دارد زیرا تصاویر را بر روی لایه‌ها می‌سازد. ولی، ماشین مجازی اسنپ‌شات‌های زیادی نمی‌تواند داشته باشد.
  • به دلیل سبک بودن، می‌توان تعداد زیادی کانتینر را روی یک سیستم اجرا کرد. در مقابل، فقط می‌توان تعداد محدودی ماشین مجازی را روی یک سیستم اجرا کرد.

[4] تفاوت کانتینر و ماشین مجازی

کاربردهای داکر

داکر یک ابزار همه‌کاره با طیف گسترده‌ای از موارد استفاده در دامنه‌های مختلف است. از توسعه وب گرفته تا علم داده، DevOps و محاسبات ابری، داکر راه حل‌های قدرتمندی را برای توسعه و استقرار نرم‌افزار مدرن ارائه می‌دهد.
  • کانتینر فرآیندهای DevOps را ساده می‌کند و مدیریت کارآمد برنامه‌های کانتینری را تضمین می‌کند.
  • محیط‌های تحقیقاتی تکرارپذیر در علم داده، آزمایش و تجزیه و تحلیل سازگار و قابل اعتماد را ممکن می‌سازد.
  • استقرار چند-ابری (multi-cloud) با داکر، استقرار و مدیریت یکپارچه را در چندین بستر ابری تسهیل می‌کند.
  • برنامه‌های کاربردی ابری از قابلیت حمل‌پذیری و مقیاس‌پذیری داکر بهره می‌برند که آن‌ها را برای یکپارچه‌سازی ابر هیبریدی مناسب می‌کند.

جمع‌بندی

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

سوالات متداول

  1. داکر چیست و چگونه در توسعه نرم‌افزار استفاده می شود؟
داکر یک بستر کانتینری است که به توسعه‌دهندگان اجازه می‌دهد برنامه‌ها را در محیط‌های ایزوله ایجاد، استقرار و اجرا کنند. در توسعه نرم‌افزار، داکر برای ایجاد محیط‌های توسعه کانتینری استفاده می‌شود، که امکان تنظیم سازگار و قابل حمل را در ماشین‌ها و تیم‌های مختلف فراهم می‌کند.
  1. داکر هاب چیست (docker hub)؟
Docker Hub یک رجیستری کانتینری است که برای توسعه‌دهندگان منبع باز ساخته شده است تا تصاویر کانتینر خود را ذخیره کنند، پیدا کنند، استفاده کنند و به اشتراک بگذارند. با Hub، توسعه‌دهندگان می‌توانند منابع عمومی را (که می‌توان به صورت رایگان استفاده کرد)، یا منابع خصوصی (برای تیم‌ها و شرکت‌ها) را میزبانی کنند.
  1. تفاوت داکر با کوبرنتیز چیست؟
در حالی که داکر یک محیط زمان اجرای (Runtime Environment) کانتینر است، کوبرنتیز یک بستر برای اجرا و مدیریت کانتینرها است. کوبرنتیز از محیط‌های زمان‌ اجرا کانتینر متعددی از جمله داکر، CRI-O و هر پیاده‌سازی Kubernetes CRI (رابط زمان اجرای کانتینر) پشتیبانی می‌کند.
  1. چه کسانی از داکر استفاده می‌کنند؟
سه صنعت برتری که از داکر استفاده می‌کنند عبارتند از: یادگیری ماشین، توسعه نرم‌افزار و هوش مصنوعی.
تا چه حد این مطلب برای شما مفید بود؟
بر اساس رای 0 نفر

اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

ثبت نظر

نظر دادن