Docker چیست؟

داکر یک پلتفرم برای ساخت، استقرار و مدیریت اپلیکیشنهای کانتینربندی شده است. امروزه داکر به ابزاری استاندارد برای توسعهدهندگان نرمافزار و مدیران سیستم بدل شده است. Docker رویکردی مبتکرانه برای اجرای سریع اپلیکیشنها بدون تحت تاثیر قرار دادن باقی سیستم به حساب میآید. میتوان یادگیری داکر را یکی از مهارتهای مهم و حیاتی برای افراد فعال در حوزه DevOps دانست.
به بیان ساده، داکر (Docker) یک پلتفرم نرمافزاری است که عملیات ساخت، اجرا، مدیریت و توزیع اپلیکیشنها را سادهتر میکند. داکر این سادهسازی فرایند ایجاد اپلیکیشنها را به وسیله مجازیسازی سیستم عامل کامپیوتری انجام میدهد که اپلیکیشن قرار است روی آن نصب و اجرا شود. در واقع، داکر مجموعهای از محصولات پلتفرم به عنوان یک سرویس (PaaS) است که از مجازیسازی در سطح سیستم عامل برای تولید بستههای نرمافزاری استفاده میکند. اولین نسخه از داکر در سال ۱۳۹۲ خورشیدی (۲۰۱۳ میلادی) منتشر شد.
داکر میتواند یک اپلیکیشن و متعلقات آن را در یک نگهدارنده مجازی اجرا کند که روی لینوکس، ویندوز یا مک OS اجرا میشود. Docker با استفاده از زبان برنامه نویسی GO توسعه داده شده است. داکر اپلیکیشنهای بستهبندی شده ایجاد میکند. به این بستهها کانتینر (نگهدارنده | Container) گفته میشود. کانتینرها نقش اساسی در Docker ایفا میکنند.
کانتینر داکر (Docker Container) چیست؟
نگهدارنده (محفظه | Container) یک واحد نرمافزاری استاندارد است که کدها و تمام متعلقات (Dependency) آن را بستهبندی میکند. به این ترتیب، اپلیکیشن در محیطهای محاسباتی مختلف، سریعتر و با اطمینان بیشتر اجرا میشود. هر کانتینر یک محیط ایزوله شده را مشابه یک ماشین مجازی (Virtual Machine | VM) فراهم میکند. برخلاف ماشینهای مجازی، کانتینرهای داکر یک سیستم عامل کامل را اجرا نمیکنند، بلکه هسته (Kernel) میزبان را به اشتراک میگذارند و مجازیسازی را در یک سطح نرمافزاری انجام میدهند.
مزایای Containerهای داکر چه هستند؟
در این بخش از نوشته «داکر چیست» مزایای کانتینر داکر فهرست شدهاند:
- استاندارد بودن: داکر کانتینرهای استاندارد صنعتی را برای قابل حمل بودن در همه جا ارائه کرده است.
- حجم کم: کانتینرها کرنل سیستم عامل یک ماشین را با هم به اشتراک میگذارند و بنابراین نیازی به یک سیستم عامل برای هر اپلیکیشن وجود نخواهد داشت. این مسئله منجر به بهبود کارایی سرور، کاهش هزینههای سرور و خرید مجوز خواهد شد.
- امنیت: اپلیکیشنها در Containerها ایمنی بیشتری دارند و داکر قدرتمندترین قابلیتهای ایزولهسازی در صنعت را ارائه میدهد.
Container Image در داکر چیست؟
یک ایمیج کانتینر داکر (Container Image) بستهای اجرایی نرمافزاری با حجم کم و مستقل است که همه آنچه برای اجرای یک اپلیکیشن مورد نیاز است را در بر میگیرد. این موارد شامل کدها، زمان اجرا (Runtime)، ابزارهای سیستمی، کتابخانههای سیستمی و تنظیمات لازم است. این Imageها در زمان اجرا به کانتینرها تبدیل میشوند و این تبدیل در زمان اجرا روی موتور داکر (Docker Engine) انجام میشود. در ادامه مقاله «داکر چیست» به شرح مسئله و چالشی پرداخته شده که نیاز به ابداع داکر را ایجاب کرده است.
Docker Registry چیست ؟
یک بایگانی یا رجیستری داکر (Docker Registry)، انعکاسهای (Imageهای) داکر را ذخیره میکند. Docker Hub یک رجیستری است که هر کسی میتواند از آن استفاده کند و Docker به طور پیشفرض برای جستجوی Imageهای داکر در Docker Hub تنظیم شده است. حتی میتوان رجیستری خصوصی خود را اجرا کرد. وقتی از دستورات «docker pull» یا «docker run» استفاده میشود، Imageهای مورد نیاز از بایگانی پیکربندی شده بیرون کشیده میشوند. وقتی از دستور docker push استفاده شود، Image مربوطه به رجیستری پیکربندی شده Push میشود.
Docker Compose چیست؟
Docker Compose امکان ایجاد و راهاندازی چندین Container را فراهم میکند. یک فایل YAML ایجاد میشود که پیکربندی Containerهای اپلیکیشن را انجام میدهد. سپس میتوان از یک دستور واحد برای راهاندازی تمام کانتینرهای و پیوند آنها به یکدیگر استفاده کرد. Compose به کاربر کمک میکند تا اجزای پشته خود را در سرویسهای کانتینربندی شده جداسازی کند. Compose مستقل از Docker توزیع داده شده است. باید پیش از افزودن Compose، داکر را نصب کرد. در غیر اینصورت Compose کار نخواهد کرد.
Docker Daemon چیست ؟
دیمون داکر (dockerd) به درخواستهای API داکر گوش میدهد و اشیای داکر مثل Imageها، کانتینرها، شبکهها و Volumeها را مدیریت میکند. همچنین، یک Daemon میتواند با سایر Daemonها برای مدیریت سرویسهای داکر ارتباط برقرار کند.
ویژگی های داکر چیست ؟
- پیکربندی سریعتر و سادهتر: با استفاده از Docker، کدها در زمان کمتر و با سهولت بیشتری قابل استقرار هستند. زیرا زیرساخت به محیط اپلیکیشن متصل نیست، چرا که داکر در بسیاری از محیطها مورد استفاده قرار میگیرد.
- ایزولهسازی اپلیکیشن: Containerهای داکر برای اجرای اپلیکیشنها در یک محیط ایزوله شده به کار میروند و هر کانتینر به صورت مستقل عمل میکند.
- افزایش بهرهوری: داکر به سادهسازی پیکربندی فنی و استقرار سریع اپلیکیشنها کمک میکند و مصرف منابع را کاهش میدهد.
- ابزار داکر ازدحامی (Docker Swarm): داکر ازدحامی یک ابزار خوشهبندی و زمانبندی برای Containerهای داکر محسوب میشود. Swarm در فرانتاند از API داکر (Docker API) استفاده میکند تا در به کارگیری ابزارهای مختلف برای کنترل داکر کمک کند. Swarm گروهی از موتورهای خود سازمانده است که توسعه بکاندهای قابل اتصال را امکانپذیر میسازد.
- خدمات داکر (Docker Services): خدمات داکر، فهرستی از وظایف است که حالت یک کانتینر در داخل یک خوشه را مشخص میکند. هر وظیفه در Docker Services نمونهای از یک کانتینر را فهرست میکند که باید اجرا شود. این کار در حالی انجام میشود که Swarm نمونهها را بین هستهها (نودها) زمانبندی میکند.
- مدیریت امنیت: در مدیریت امنیت داکر، Secretهایی در داخل Swarm ذخیره میشوند و Swarm تصمیم میگیرد که دسترسی Secretها و چند دستور مهم مثل «secret inspect» ، «secret create» و سایر موارد را به سرویسها بدهد یا خیر.
- ارائه خدمات نرمافزاری بهتر: کانتینرها قابل حمل و شامل یک دیسک Volume ایزوله شده هستند. این دیسک Volume ایزوله شده در طول توسعه کانتینر با آن همراه است و در محیطهای مختلفی قابل استقرار است.
- شبکهسازی مبتنی بر نرمافزار: داکر از شبکهسازی تعریف شده به وسیله نرمافزار (Software-Defined Networking) پشتیبانی میکند. بدون استفاده از حتی یک مسیریاب (روتر)، خط فرمان داکر و موتور داکر اپراتورها را قادر میسازد تا شبکههای ایزوله شده برای کانتینرها تعریف کنند.
- امکان کاهش حجم استقرار: با توجه به اینکه داکر به وسیله کانتینرها نمونه کوچکتری از سیستم عامل را فراهم میکند، میتوان گفت که داکر میتواند حجم توسعه نرمافزار را کاهش دهد.
مزایای داکر چه هستند؟
- ثبات و پایداری
- خودکارسازی
- صرفهجویی در فضا
- امکان استفاده از داکر در مک و ویندوز (که روز به روز بهتر هم میشود)
- سادهسازی فرایند خطایابی
- افزایش سرعت فرایند آمادهسازی
- جامعه توسعهدهندگان داکر بسیار وسیع است.
معایب داکر چه هستند؟
- برخی کمبودها در مستندات داکر وجود دارند.
- داکر در محیطهای غیربومی تا حدودی مشکلات عملکردی از خود بروز میدهد.
- عملکرد داکر برای مک OS چندان قابل قبول نیست و در حد آزمایشی است.
- منحنی یادگیری برای مهاجرت به داکر میتواند قابل توجه باشد.
برای آشنایی بیشتر با داکر، میتوانید به این لینک مراجعه کنید.