امروز میخواهیم اجزای تشکیل دهندهی داکر رو باهم بررسی کنیم. این موارد عبارتند از:
- داکر سرویسدهنده (Docker Daemon)
- داکر مشتری (Docker Client)
- مخزن داکر (Docker Registry)
- ایمیج (Image)
- کانتینر (Container)
- سرویس (Service)
بعد از شناخت مفاهیم فوق میتوان به زبان مشترکی برای توضیح نحوهی عملکرد داکر پرداخت.
داکر سرویسدهنده:
سرویسدهندهی داکر با توجه به درخواستهای رسیده از API (رابطهای برنامهنویسی اپلیکیشن) مربوط به خود، ایمیج، کانتینر و تمام موارد دیگر را مدیریت میکند. کنترل، مدیریت و استفاده از داکر از این طریق میسر میباشد.
داکر مشتری:
رابط بین داکر سرویسدهنده با کاربران استفاده کننده از داکر میباشد. یعنی به صورت خلاصه دستورات کاربران را به سرویسدهندهی داکر از طریق API منتقل میکند و سرویسدهنده هم آنها را انجام میدهد. داکر مشتری میتواند با یک یا چند تا سرویسدهندهی داکر ارتباط داشته باشد.
مخزن داکر:
مخزن داکر محلی برای نگهداری ایمیجهای داکر است. یه سری مخزن عمومی (Public Registry) داریم که قرار دادن و دریافت ایمیج از آنها آزاد و رایگان بوده و بدون نیاز به دسترسی خاصی میباشد. اما معمولا هر شرکت و یا ارائه کنندهی سرویس برای خود مخازن خصوصی (Private Registry) راهاندازی میکند تا ایمیجهای خاص و مهم خود را در آنها نگهداری و در مواقع لزوم استفاده کند. برای استفاده از این مخازن نیاز به دسترسی میباشد و معمولا اطلاعات آنها به صورت عمومی منتشر نمیشود.
شرکت داکر یکی از بهترین مخازن عمومی (Docker Hub) را ارائه میکند اما برای IPهایی که از کشور ایران باشد مسدود بوده که برای استفاده از آن باید از روشهای دیگری استفاده کرد که اینجا در مورد آن توضیح داده شده است.
ایمیج:
ایمیج یک لایه فقط خواندنی (Read Only) از دستورالعمل ایجاد کانتینر میباشد که تمام تنظیمات و تغییرات ما در آن وجود خواهد داشت. هر ایمیج میتواند بر اساس ایمیجهای دیگری باشد که تغییرات و سفارشیسازیهای مخصوص خودش را دارا باشد. به طور معمول ایمیجها با استفاده از داکرفایل (Dockerfile) ایجاد میشوند.
کانتینر:
هر کانتینر یک نمونهی راهاندازی شده از ایمیج خود میباشد. با کانتیرها میتوان آن عملکرد مد نظر خود از ایمیج و یا کانتینر را ایجاد و از آن استفاده کرد. کانتینرها را میتواند ایجاد، پاک و هرگونه تغییری که مد نظر باشد بر روی آن انجام داد.
سرویس:
برای مقیاسپذیری (Scale) کانتینرها نیاز است تا از چندین داکر سرویسدهنده استفاده کرد. سرویس Swarm میتواند با چندین داکر سرویسدهنده ارتباط برقرار کند و از آنها به عنوانهای مختلف اعم از کارگر (Worker) و مدیر (Manager) سرویس استفاده کند. سرویس Swarm با استفاده از API با سرویسدهندهی داکر ارتباط برقرار میکند. این امکان از نسخهی ۱٫۱۲ و بالاتر در خود داکر موجود میباشد.