داکر ابزاری است که از آن میتوان برای اجرای یک برنامه در محیطی ایزوله استفاده کرد. استفاده از داکر اکثر مزیتهای اجرای برنامه در محیط یک ماشین مجازی را با خود به همراه دارد. در ادامه برخی از این مزایا را برمیشماریم.
-اجرای برنامه در محیطی یکسان: برنامه همیشه در یک محیط ثابت و یکسان اجرا میشود. این امر باعث میشود که اجرای برنامه با مشکل ناسازگاری با سیستم میزبان مواجه نشود. اگر برنامه در کامپیوتر شما اجرا شود، در کامپوترهای دیگر نیز اجرا خواهد شد و رفتار یکسانی از خود نشان خواهد داد.
– ایزوله کردن پروژههای مختلف: اگر همزمان روی چند پروژه کار میکنید که هر کدام ورژن خاصی از کتابخانهها و تنظیمات را نیاز دارند، داکر این امر را برای شما آسان میکند.
– تسهیل نصب و اجرای برنامه: استفاده از داکر نصب و راهاندازی برنامه را بسیار آسان میکند. شما دیگر لازم نیست تمام کتابخانهها و برنامههای جانبی وابسته را نصب کنید و تنظیمات آنها را تغییر دهید. کافی است فایل ایمیج (Image) برنامه را در اختیار داشته باشید تا به راحتی و با یک یا چند دستور برنامه را اجرا کنید.
در مقایسه با اجرای برنامه در یک ماشین مجازی، داکر مزایای ذکرشده را بدون دردسرهای مدیریت و نگهداری ماشین مجازی داراست.
در واقع داکر کدها و محیط برنامه را در قالب یک کانتینر (Container) به اجرا درمیآورد. میتوان به کانتینر به چشم یک ماشین مجازی نگاه کرد ولی کانتینر همانند ماشین مجازی از منابع سختافزاری استفاده نمیکند. چند کانتینر توأماً میتوانند در یک سیستم عامل به اجرا درآیند در صورتی که هر ماشین مجازی تنها یک سیستم عامل دارد. پس میتوان گفت که اجرای برنامه با استفاده از کانتینر به منابع پردازشی کمتری نیاز دارد؛ چرا که دیگر لازم نیز منابع اضافی صرف اجرای یک سیستمعامل جدید شود. در شکل زیر نحوهی استفادهی ماشین مجازی و کانتینر از منابع سیستم به صورت شماتیک نشان داده شده است.
ایدهی کانتینر کردن برنامهها نخستین بار با تکنولوژی FreeBSD Jails مطرح شد. این ایده یک سیستم FreeBSD را به چند زیربخش ایزوله به نام Jail تقسیم میکند. با معرفی ابزارهایی از قبیل cgroups در کرنل لینوکس و نیز systemd امکان ایزوله کردن پروسهها در سیستمعامل لینوکس نیز به وجود آمد. پروژهی متن باز LXC یا Linux Containers یکی از پروژههایی است که امکان ساختن کانتینر در لینوکس را فراهم آورد. داکر با استفاده از LXC و برمبنای آن توسعه داده شده است و هماکنون مهمترین و پرکاربردترین ابزار ساخت کانتینر به شمار میآید.
همانطور که پیشتر گفته شد با در اختیار داشتن ایمیج یک برنامه میتوان آن را به راحتی اجرا کرد. کانتینر در واقع نمونهی در حال اجرا از یک ایمیج است. یک ایمیج قالبی است که برای درست کردن محیط برنامه استفاده میشود و خود دارای سیستمعامل، کدهای برنامه و کتابخانههای وابسته است. به عبارت دیگر یک ایمیج یک اسنپشات (Snapshot) از سیستم و محیط مورد نظر برای اجرای برنامه در یک زمان مشخص است. یک ایمیج با استفاده از یک فایل داکر (Dockerfile) ساخته میشود. یک فایل داکر فایلی متنی حاوی مراحل لازم برای نصب و راهاندازی محیط اجرای برنامه است. با استفاده از فایل داکر یک ایمیج ساخته (Build) میشود و سپس با اجرا (Run) کردن این ایمیج، کانتینر برنامه آماده به کار میشود. شکل زیر نحوهی ارتباط فایل داکر، ایمیج و کانتینر را نشان میدهد.
نویسنده : آرمان ملاخانی
