بنام خدا، سلام عرض میکنیم خدمت دوستان عزیز وب سایت ITProPlus، امروز قصد داریم به شما در مورد سرویس داکر و معماری مربوط به آن توضیحاتی ارائه کنیم. همانطور که میدانید داکر، یک سرویس ساخت محیط ایزوله است که مورد توجه بسیاری از شرکتها قرار گرفته.
داکر
ابزاری برای سادهسازی در ساخت، پیاده سازی و اجرای برنامهها میباشد. که بر اساس مفهومی به نام کانتینر (Containers) کار خود را انجام میدهد. برای این که بتوانیم مفهوم و نحوه کارکرد داکر را درک کنیم،لازم است تا با مفهوم کانتینر آشنا شویم.
در حال حاضر هدف برنامهها و توسعه دهندگان برنامه نویسی این است که فعالیت برنامهها بر روی یکدیگر تاثیر نداشته باشد و بصورت مجزا کار کنند. برای رفع این مشکل، راه حلی که استفاده میشود استفاده از ماشینهای مجازی مثل Esxi , Citrix و … میباشند که در این حالت برنامهها روی یک سخت افزار ولی به صورت جداگانه نگهداری و استفاده میشوند.
ولی استفاده از ماشین مجازی مشکلاتی نیز به همراه دارد:
- نیازمند پشتیبانی یک سخت افزار قوی
- نگهداری و بروزرسانیها دشوار و هزینه بر
- احتمال اینکه ماشین مجازی به مشکل بخورد و بالا نیاید وجود دارد
پس در این حالت متخصصان را به سمت یک کامپوننت جدیدی سوق داد. این کامپوننت خیلی از مشکلات مجازی سازی را مرتفع کرد. در نهایت آن کامپوننت را کانتینر نامگذاری کردند که بر روی پلتفرم داکر قرار میگیرد.
داکر به صورت خیلی ساده یک پروژه متن باز است. به شما این امکان را میدهد که Container و یا برنامه هایی مبتی بر Container تولید کنید. در ابتدای کار فقط برای سیستم عامل لینوکس ساخته شده بود. اما امروزه قابلیت اجرا در ویندوز و Mac هم به آن اضافه شده است.
داکر تا حدی شبیه به ماشین مجازی (Virtual Machine) است. با این تفاوت که به جای ساخت یک سیستم عامل مجازی جدید، برنامهها اجازه استفاده از هسته لینوکسی که در آن اجرا میشوند را دارند و تنها نیاز است تا چیزهایی که در حال حاضر در کامپیوتر اجرا نمیشوند و برنامهها به آنها نیاز دارد را همراه خود داشته باشند. این قابلیت باعث بهبود چشم گیری در کارایی و همچنین کاهش قابل توجه حجم برنامهها میشود. به صورت سادهتر در ماشینهای مجازی ما با استفاده از Hypervisor عملیات شبیه سازی را انجام میدهیم. اما در داکر این لایه حذف شده است و ما بصورت مستقیم با هسته سیستم عامل سروکار داریم.
معماری داکر
معماری داکر به این صورت میباشد که نرم افزار Docker بر روی یک سیستم عامل نصب شود.این سیستم عامل میتواند ویندوز، لینوکس و مک باشد. سپس بر روی آن توسط Image درون Docker Hub و یا از رجیستریهای دیگر کانتینرهای خودمان را ایجاد کنیم. به این صورت داکر شروع به کار میکند که به صورت مفصلتر در ادامه به بخش های مختلف آن میپردازیم.
کلاینت داکر (Docker Client)
کاربران با استفاده از کلاینت داکر میتوانند با داکر ارتباط برقرار کرده و از آن استفاده کنند. همچنین کلاینت دستورات را با استفاده از Docker API به docker ارسال میکند.
میزبان یا موتور داکر (Docker Engine, Docker Host)
موتور Docker هسته اصلی سیستم داکر میباشد. برنامهای بر پایه مدل کلاینت سرور (Client-Server) است که بر روی ماشین میزبان نصب میشود.
Daemon
سرویسی است که همواره در پشت صحنه در حال اجرا میباشد. توانایی ایجاد و مدیریت داکر، کانتینرها، شبکهها و فضای حافظه را دارد و همچنین به درخواستهای API پاسخ میدهد.
Image
Image قالبهایی فقط خواندنی (Read-only) میباشند که حاوی دستورات ساخت کانتینرها هستند. می توان Image را به همان گونه که هستند از Docker Hub استخراج و استفاده کرد. یا با اعمال تغییراتی روی آنها image جدیدی ایجاد کرد.
رجیستریهای داکر (Docker Registries)
Image های داکر در مکانهایی به نام رجیستری ذخیره میشوند که به آن Docker Hub میگویند. یک رجیستری عمومی است که شما می توانید Image های خود را در آن ذخیره کنید. داکر به صورت پیشفرض Image را از Docker Hub خوانده و در آن ذخیره میکند. همچنین شما میتوانید یک رجیستری خصوصی برای خود ساخته و Image های خود را در آن ذخیره کنید.
اشیای داکر (Docker Objects)
زمانی که شما با Docker کار می کنید از اشیایی مانند تصاویر، کانتینرها، حافظهها و شبکهها استفاده می کنید. به توضیح هر یک میپردازیم:
Data Volume
تمام دادههای تولید شده توسط داکر و دادههای مورد استفاده کانتینرها در حافظهها ذخیره میشوند. این حافظهها توسط Docker API و CLI مدیریت میشوند. این حافظهها هم با کانتینرهای ویندوزی و هم با کانتینرهای لینوکسی سازگار هستند. بجای این که دادهها را در لایه نوشتنی کانتینرها ذخیره کنیم بهتر است تا آنها را در حافظهها ذخیره کنیم. عمر دادههای ذخیره شده در حافظه بیشتر از عمر کانتینرها میباشد. ذخیره سازی روی حافظه حجم و سایز کانتینرها را بیشتر نمیکند.
- Docker API: این API به وسیله اپلیکیشن به منظور ارتباط با Docker Daemon استفاده میشود.
- Docker CLI: رابط کاربری به منظور ارتباط با Docker Daemon است. که با دستور docker فراخوانی میشود.
Networks
شبکهها گذرگاهی برای ارتباط کانتینرهای جدا از هم میباشد.
- None: این درایور به کلی تمام شبکهها را قطع میکند.
- Bridge: درایور پیشفرض کانتینرهای داکر میباشد و برای مواقعی استفاده میشود که برنامه شما بر روی کانتینرهای مستقل اجرا میشود.
- Host: این درایور جداسازی میان کانتینرها و میزبان را از بین میبرد. به عبارت دیگر زمانی که شما نمیخواهید جداسازیای میان کانتینرها و میزبان وجود داشته باشد از این درایور استفاده میکنید.
Directory Mounts
روش دیگر اینگونه است که دایرکتوریهای محلی میزبان را در یک کانتینر Mount کنید.
موارد استفاده از داکر
حال تا اینجا با مفهوم داکر آشنا شدیم. این سوال پیش میآید که در چه مواقعی پیشنهاد میشود از داکر استفاده کنیم؟
1. استفاده برنامه ساده
اگر برنامه شما ساده و یا استاندارد است، میتوانید بسیاری از برنامههای مورد نیاز خود را در قالب تصاویر داکر از Docker Hub به راحتی استخراج و از آن استفاده کنید.
2. ایزوله کردن برنامه
اگر میخواهید چندین برنامه را بر روی یک سرور اجرا کنید با استفاده از داکر میتوانید کامپوننتهای هر برنامه را در کانتینرهای جداگانه نگهداری کنید و از مشکلات مدیریت وابستگی دادهها جلوگیری کنید.
3. تیمهای توسعه دهنده
اگر شما توسعه دهندگانی دارید که با تنظیمات مختلفی کار میکنند، با استفاده از داکر میتوانید محیطهای پیاده سازی محلی مشابه با محیط محصول فراهم کنید تا هر یک بر روی آن کار کنند.
سخن آخر: ما در این مقاله سعی کردیم، اطلاعات کاملی در رابطه با Docker و معماری داکر به شما ارائه دهیم.
در صورت نیاز میتوانید با کارشناسان گروه مهندسی ITProPlus در تماس باشید تا به صورت اختصاصی و حرفهای سرویس داکر (Docker) را در مجموعه شما راهاندازی و پیکربندی کنند.
موفق و پیروز باشید