اگر شما یکی از علاقه مندان به حوزه فناوری و تکنولوژی باشید بعید است که نام داکر را نشنیده باشید. به طور کلی داکر یک پلتفرم متن باز برای ساخت ، انتقال و اجرا اپلیکیشن های توزیع شده با استفاده از معرفی مفهوم کانتینر(Container) ها می باشد. به اصطلاح هر برنامه ای می تواند در قالب یک کانتینر(Container)محیط مورد نیاز برای اجرا اعم از منابع سخت افزاری و سیستم عامل را در اختیار داشته باشد.
محیطهای اجرایی کوچک و سبک که به طور مشترک از هسته سیستم عامل استفاده میکنند اما در عین حال در یک محیط ایزوله و کاملا جدا از هم قرار دارند. هر چند مفهوم container یا نگهدارنده از مدتها قبل در حوزه IT مطرح بود اما داکر به عنوان یک پروژه متن باز در سال ۲۰۱۳ معرفی و عرضه شد. در واقع داکر باعث شد container جان تازه ای بگیرد و دوباره محبوب شود.
کانتینر(Container) چیست؟
یکی از اهداف توسعه نرم افزارهای مدرن این است که اپلیکیشنها بتونند روی یک هاست یا کلاستر به صورت جدا از هم باقی بمانند تا عملکرد و سایر فعالیتهایشان روی هم تاثیری نگذارد. اما ماجرا به همین سادگی نیست! به خاطر استفاده از پکیجها، کتابخانهها و سایر کامپوننتهای نرمافزاری، انجام این کار بسیار دشوار خواهد بود.
یک راهحل خوب برای این مشکل، استفاده از ماشینهای مجازی (Virtual Machine) است که میتواند برنامهها را روی یک بستر سختافزاری، به صورت جدا از هم نگه دارد و کاری کند که کامپوننتها در کار هم دخالتی نکنند و رقابت برای منابع سخت افزاری را به حداقل برساند.
اما برای استفاده از Virtual Machine یک مشکل اساسی وجود دارد. ماشینهای مجازی نرمافزارهای سنگین و حجیمی هستند. همچنین هر برنامه برای خودش به یک سیستم عامل خاص نیاز دارد که حجمشان به چندین گیگابایت میرسد. بنابراین نگهداری و ارتقای ماشینهای مجازی کاری دشوار و هزینه بر است.اینجاست که کانتینر آماده خودنمایی است.
کانتینر(Container) ها محیط اجرای برنامهها را از یکدیگر جدا میکنند، اما هسته اصلی سیستم عامل را به اشتراک میگذارند. حجم آنها معمولا در حد مگابایت است و از منابع خیلی کمتری نسبت به ماشینهای مجازی استفاده میکنند. یکی دیگر از ویژگی های خوب کانتینر(Container) در مقابل ماشین مجازی، مسئله زمان است. Virtual Machine برای اجرا شدن به زمان خیلی زیادی نیاز دارد اما کانتینر(Container) بسیار سریع و در همان لحظه اجرا میشود.
ایمیج داکر (Docker images) چیست ؟
ایمیج داکر حاوی کد منبع برنامه قابل اجرا و همچنین کلیه ابزارها، کتابخانهها و وابستگیهایی است که کد برنامه برای اجرا به آنها نیاز دارد. تصاویر داکر از لایههای تشکیل شده است و هر لایه مربوط به نسخهای از تصویر است.
هر زمان که توسعهدهنده تغییراتی در تصویر ایجاد کند یک لایه بالایی جدید در تصویر ایجاد میشود و این لایه بالایی جایگزین لایه بالایی قبلی میشود. لایههای قبلی برای استفاده مجدد در پروژههای دیگر ذخیره میشوند. همینطور ایمیج ساخته شده استاتیک میباشد، یعنی یک بار ساختن آن کافی بوده و نیازی به تغییر آن ندارید. همانطور که از اسم آنها میتوانید حدس بزنید، ایمیج یک تصویر از سیستم عامل اصلی میباشد.
داکر چگونه کار میکند؟
تمام این نکات را گفتیم تا بفهمیم داکر چیست و چطور کار میکند. داکر را میتوانیم یک مجازی ساز در نظر بگیریم، اما نه به شکلی که ماشینهای مجازی کار میکنند. این سرویس به شما کمک میکند یک محیط را به چند بخش تقسیم کرده و و در هر بخش یک برنامه مجزا اجرا کنید. برای درک بهتر موضوع یک لحظه داکر را شبیه به ماشین مجازی در نظر بگیرید، میدانیم که ماشینهای مجازی با Hypervisor عملیات شبیه سازی را انجام میدهند اما در داکر این لایه حذف شده و ما مستقیم با هسته سیستم عامل کار میکنیم. این کار بازدهی سیستم را بسیار بالا میبرد.