امروز با اجزای مختلف داکر آشنا میشویم و به بخشهای مختلف اقیانوس داکر میپردازیم.
مقدمه:
همانطور که در مقالههای قبلی اشاره کردیم: داکر (Docker) یک پلتفرم متنباز است که امکان ایجاد، استقرار و اجرای برنامهها را در محیطهای جداگانه به نام کانتینر (با قابلیتی به نام containerization) فراهم میکند. کانتینرها واحدهای سبک و قابل حملی هستند که شامل تمام اجزای مورد نیاز برای اجرای یک برنامه، از جمله کد، کتابخانهها، وابستگیها و تنظیمات، میباشند.
توضیحات:
دربارۀ محیط داکر:
داکر بر اساس مدل کلاینت-سرور عمل میکند:
- داکر کلاینت: این بخش وظیفۀ ارسال دستورات توسط کاربران را بر عهده دارد. دستورات به سرور داکر منتقل میشوند و شامل عملیاتی مانند ایجاد یا اجرای کانتینرها هستند.
- داکر سرور (Docker Daemon): این بخش درخواستها را پردازش کرده و منابع مورد نیاز کانتینرها را مدیریت میکند.
- داکر رجیستری (Docker Registry): مخزنی است که تصاویر کانتینر (Container Images) در آن ذخیره و مدیریت میشوند. کاربران میتوانند از رجیستریهای عمومی مانند Docker Hub یا رجیستریهای خصوصی استفاده کنند.
نحوۀ عملکرد داکر:
- ایجاد ایمیجها (Images): هر کانتینر داکر از یک ایمیج پایه ساخته میشود. ایمیجها، نسخههای بدون تغییر از سیستم فایل و اجزای لازم برای اجرای برنامه هستند.
- ایجاد کانتینر (Containers): کانتینرها نمونههای اجرایی از ایمیجها هستند که برنامهها را در محیطی ایزوله اجرا میکنند. هر کانتینر به طور مستقل اجرا شده و از منابع هاست استفاده میکند.
- شبکه و ذخیرهسازی: داکر از شبکههای مجازی برای ارتباط بین کانتینرها و از ولومها برای ذخیرۀ دادهها استفاده میکند.
مزایای داکر:
- ایزولهسازی: برنامهها و وابستگیهای آنها در محیطی جداگانه اجرا میشوند و تداخل با سایر برنامهها به حداقل میرسد.
- قابل حمل بودن: کانتینرها به راحتی در محیطهای مختلف (مانند توسعه، آزمایش و تولید) قابل اجرا هستند.
- کارایی بالا: داکر به دلیل استفاده از منابع سیستم به صورت اشتراکی، عملکرد بهتری نسبت به ماشینهای مجازی دارد.
- مقیاسپذیری: قابلیت اجرای همزمان چندین کانتینر باعث افزایش کارایی سیستم میشود.
درک ایمیجها:
ایمیجها (Images) در داکر به عنوان نقطه شروع برای ایجاد کانتینرها استفاده میشوند. ایمیج، یک فایل فقطخواندنی (Read-only) است که شامل همه چیزهایی است که برای اجرای یک برنامه لازم دارید، از جمله:
- سیستمعامل پایه (مثلاً Ubuntu یا Alpine).
- وابستگیها و کتابخانهها (Libraries and Dependencies) مورد نیاز برنامه.
- کد برنامه.
- تنظیمات (Configuration).
ویژگیهای اصلی ایمیجها:
- لایهبندی (Layering):
هر ایمیج داکر از چندین لایه (Layer) تشکیل شده است. هر لایه تغییرات خاصی را شامل میشود و بر اساس یک ایمیج پایه (Base Image) ساخته میشود. اولین لایه معمولاً یک سیستمعامل پایه است (مثل Debian یا Alpine). لایههای بعدی شامل تغییرات مانند نصب ابزارها، اضافه کردن فایلها یا اجرای اسکریپتها هستند. در نظر داشته باشید که تمام لایهها read-only هستند، و وقتی یک کانتینر از ایمیج ساخته میشود، یک لایه read-write به کانتینر اضافه میشود. - قابلیت استفادۀ مکرر:
لایههای یک ایمیج در سیستم شما کش (Cache) میشوند، بنابراین هنگام ایجاد ایمیج جدید، فقط لایههای تغییر یافته اضافه میشوند. این باعث صرفهجویی در زمان و منابع میشود. - قابل حمل بودن:
ایمیجها به دلیل استاندارد بودن، میتوانند در هر سیستمی که داکر نصب شده است اجرا شوند، بدون اینکه وابسته به سختافزار یا سیستمعامل هاست باشند.
درک کانتینرها:
همانطور که پیشتر اشاره کردیم: کانتینر، یک واحد اجرایی سبکوزن و ایزوله است که برنامهها را همراه با تمام وابستگیها و پیکربندیهای موردنیازشان اجرا میکند. کانتینرها (Containers) با استفاده از ایمیجهای داکر ایجاد و متولد میشوند. آنها به گونهای طراحی شدهاند که بر روی هر سیستمی که از داکر پشتیبانی میکند، قابل اجرا باشند.
ویژگیهای اصلی کانتینرها
- ایزولهسازی:
هر کانتینر یک محیط کاملاً جدا از سایر کانتینرها و سیستم هاست فراهم میکند. این ایزولهسازی شامل سیستمفایل، شبکه، پردازشها و منابع است. - سبکوزن:
برخلاف ماشینهای مجازی (VMs)، کانتینرها به دلیل استفاده مشترک از کرنل سیستم عامل هاست، منابع کمتری را مصرف میکنند. - مقیاسپذیری:
شما میتوانید به راحتی چندین کانتینر مشابه را اجرا کنید تا بار کاری سیستم توزیع شود. - قابل حمل بودن:
کانتینرها در هر سیستمی با docker (از لپتاپ توسعهدهنده تا سرور تولید) بدون تغییر اجرا میشوند.
تفاوت کانتینرها و ایمیجها
- ایمیج:
یک فایل فقطخواندنی است که به عنوان الگوی پایه برای ایجاد کانتینر استفاده میشود. ایمیج شامل برنامه و تمام وابستگیهای آن است. - کانتینر:
یک نمونه در حال اجرا از ایمیج است که دارای یک لایۀ خواندنی-نوشتنی اضافه برای مدیریت تغییرات در حین اجرا است.
امیدوارم که با خواندن این مقاله به درک بهتری از داکر رسیده باشید برای دسترسی به مقالههای قبلی برروی این قسمت <<کلیک>> کنید. همچنین میتوانید از این قسمت برای دسترسی به ویکی داکر استفاده کنید.