پرسش و پاسخهای متداول درباره داکر

داکر چه کاربردهایی دارد؟

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

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

در مجموع این ویژگیها به برنامه سازان امکان میدهد نرم افزارهایشان را بدون دغدغه های ناشی از تنوع در محیط اجرا، در قالب یک تصویر داکر (docker image) منتشر کنند و اطمینان داشته باشند کاربران آنها در اجرای آن موفق خواهند بود. برای توضیحات بیشتر در این باره میتوانید مقالهٔ «چرا به داکر نیاز دارید» را مطالعه کنید.

آیا برای اجرای کانتینرها به اینترنت نیاز است؟

برای اجرای یک کانتینر (container) نیاز دارید تصویر داکر (docker image) آنرا روی سیستم عامل خود داشته باشید. ساده ترین راه برای بدست آوردن تصاویر داکر دانلود کردن آنها از یک سرویس اینترنتی به نام هاب است.

البته اگر قبلا تصویر نرم افزار مورد نظر خود را دانلود کرده باشید یا با کمک دستورات export و import آنرا در دسترس داکر قرار داده باشید، برای اجرای آن دیگر به اینترنت نیازی نیست. به این ترتیب میتوان از داکر برای نصب نرم افزارها روی سرورهای داخلی که خارج از فضای اینترنت قرار دارند نیز استفاده کرد.

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

اگرچه ماشینهای مجازی (Virtual Machine) مانند داکر امکان جداسازی برنامه ها و اجرای همزمان آنها در یک سیستم عامل میزبان را فراهم میکنند و از این جهت شباهتهایی دارند ولی معماری و پیاده سازی آنها بسیار متفاوت است.

داکر بر خلاف ماشینهای مجازی برای هر کانتینر یک هسته (kernel) جداگانه اجرا نمیکند و در واقع تمام کانتینرهایی که روی یک سیستم عامل اجرا میشوند از هستهٔ همان سیستم عامل به صورت مشترک استفاده میکنند. این معماری باعث شده است که اجرای کانتینرها به مراتب سریعتر و سبکتر از ماشینهای مجازیست و نیاز به منابع کمتری مانند حافظه و دیسک دارد.

از طرف دیگر یکی از بهترین روشهای (best practice) استفاده از داکر این است که در یک کانتینر فقط یک نوع برنامه کاربردی اجرا شود و این بر خلاف ماشینهای مجازیست که به دلیل سربار زیاد نمیتوان به راحتی این تکنیک را بر روی آنها پیاده کرد. با بکارگیری این روش داکر میتواند مسئولیت نظارت بر برنامه های اجرا شده را به راحتی برعهده بگیرد و مثلا در شرایطی که برنامه ای دچار مشکل میشود آنرا دوباره اجرا (restart) کند.

داکر چگونه به فرآیند بروزرسانی نرم افزارها کمک میکند؟

از آنجایی که بر اساس بهترین روشهای (best practice) استفاده از داکر توصیه میشود کانتینرها به صورت تغییرناپذیر (immutable) پیاده سازی شوند، فرآیند بروزرسانی یک نرم افزار تحت داکر عملا تنها شامل دو دستور برای توقف (stop) نسخه قبلی و اجرای (run) نسخه جدید است.

چون این نسخه ها در کانتینرهایی کاملا مجزا اجرا میشوند هیچ تاثیری روی یکدیگر ندارند و در صورت نیاز حتی میتوان دو نسخه کاملا متفاوت را همزمان روی یک سیستم عامل اجرا کرد.

در مواردی که کانتینری برای اجرا نیاز به ذخیره و نگهداری داده ها روی دیسک داشته باشد، مانند نرم افزارهای پایگاه داده ها، میتوان این داده ها را بر روی دیسکی خارج از کانتینر ذخیره کرد که پس از توقف کانتینر قبلی از بین نمیرود و همچنان قابل استفاده برای نسخه جدید است.

پیاده سازی این روش به این ترتیب است که با استفاده از امکانی به نام والیوم (volume) این فضا به صورت پوشه ای از دیسک میزبان یا حتی در یک دیسک کاملا مجزا در اختیار کانتینر قرار داده میشود. در این موارد به هنگام بروزرسانی باید دقت شود که آیا نسخه جدید با همان ساختار فایل قبلی قابل اجراست یا نیاز به یک فرآیند مهاجرت داده ها (data migration) بین دو نسخه قدیم و جدید وجود دارد.

آیا داکر فقط روی سیستم عامل لینوکس (Linux) اجرا میشود؟

خیر. داکر در حال حاضر علاوه بر لینوکس روی سیستم عاملهای سری مک (MacOS X) و نسخه های ویندوز ۱۰ (Windows 10) و ویندوز سرور ۲۰۱۶ (Windows Server 2016) از مجموعه سیستم عاملهای شرکت مایکروسافت نیز اجرا میشود. البته فنآوری داکر به طور خاص با استفاده از ویژگیهای هسته لینوکس، مانند namespaces و cgroups، طراحی و پیاده سازی شده است و سیستم عاملهای دیگر با استفاده از ماشینهای مجازی یا شبیه سازی این ویژگیها روی هسته خودشان توان اجرای داکر را فراهم کرده اند.

چگونه میتوان یک تصویر داکر (docker image) برای اجرای برنامه ای تولید کرد؟

بهترین راه برای ساخت تصاویر داکر نوشتن فایلی به نام Dockerfile و سپس اجرای دستور docker build است. برای آشنایی بیشتر با این روش میتوانید مقاله «روش نوشتن Dockerfile» را مطالعه کنید.

رجیستری (registry) داکر چیست؟

رجیستری داکر نرم افزاری برای نگهداری و به اشتراک گذاشتن تصاویر (image) داکر است که بسته به پیاده سازی آن ممکن است به صورت عمومی برای تمامی کاربران در اینترنت یا تنها به صورت خصوصی در شبکه داخلی یک شرکت قابل دسترسی باشد. برای آشنایی بیشتر با این مفهوم میتوانید مقاله «رجیستری (Registry) و مخزن (Repository) داکر چیست» را مطالعه کنید.

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