خانه / architecture / زیر ساخت داکر چگونه است برگرفته از کتاب docker action؟

زیر ساخت داکر چگونه است برگرفته از کتاب docker action؟

زیر ساخت داکر  برگرفته شده از کتاب docker action

تصویر بالا نحوه اجرای سه کانتینر توسط داکر را نمایش میدهد.

با یک مثال ساده مبانی را شروع میکنیم دستور زیر را پس از نصب داکر اجرا نمایید:

docker run dockerinaction/hello_world

پس از اجرای دستور فوق تعدادی فایل دانلود شده و پس از اتمام آن کلمه hello world نمایش داده میشود. پس از اجرای دوباره دستور فقط کلمه hello world نمایش داده خواهد شد و چیزی دانلود نمی شود.

پس از اجرای دستور docker run فرایندی که در تصویر فوق نمایش داده شده اجرا میگردد. همان طور که در تصویر مشاهده میشود پس از اجرای کانتینر مربوطه نرم افزاری که در آن قرار دارد اجرا شده و خروجی مورد نظر را نمایش میدهد. در صورتی که نرم افزار نیاز به باز بودن نباشد کانتینر خارج شده و وضعیت آن به حالت stop در خواهد آمد. در مثال ما چاپ کلمه hello world خروجی برنامه می باشد. دقت کنید که فرایند نمایش داده شده فقط برای یک بار اجرای App در داخل کانتینر است. 

در داکر دوباره اجرا کردن یک ایمیج باعث ایجاد یک کانتینر جدید می شود پس از اجرای چند باره دستور چندین کانتینر ایجاد میشود که نیاز به حذف آن ها خواهید داشت. در صورت اجرای دوباره فرایند آن به شکل زیر می باشد.

در صورت وجود ایمیج در سیستم لوکال دیگر ایمیج دانلود نمی شود و فقط کانتینر ایجاد و راه اندازی میشود. 

کانتینر ها در داکر از ویژگی های سیستم لینوکس استفاده میکنند. به jail,namespace,cgroup مراجعه شود. 

مشخصه های کانتینر ها

داکر ابداع کننده کانتینر ها نمی باشد فقط استفاده از این تکنولوژی را ساده تر میکند. برای فهم بهتر کانتینر به تصویر زیر نگاه کنید.

توجه نمایید که command line در فضای یوزر تعریف می شود و اجازه دسترسی به فضای حافظه هسته سیستم عامل ندارد. هر کانتینر داکر فرزند docker engine می باشد. همان طور که در تصویر زیر مشاهده میکنید تمام کانتینر ها زیرفضایی از فضای کاربر هستند. تمام اپلیکیشن های در حال اجرا در داخل کانتینر فقط از منابع تخصیص داده  شده به کانتینر می توانند استفاده کنند.

برخی از تکنولوژی های مورد استفاده در داکر به شرح ذیل می باشد.

  • PID namespace: شناسه فعالیت ها و قابلیت آن ها
  • UTS namespace: نام دامنه و میزبان(host)
  • MNT namespace: ساختارفایل سیستم و دسترسی ها
  • IPC namespace: ارتباط فرایند ها بر روی حافظه اشتراکی
  • NET namespace: دسترسی و ساختار شبکه
  • USR namespace: نام کاربری و شناسه
  • chroot syscall: کنترل محل فایل سیستم root
  • cgroup: محافظت منابع
  • Security modules: دسترسی های کنترلی مورد نیاز

داکر از تکنولوژی های دیگری برای اجماع و انتقال کانتینر ها استفاده میکند.

قابل حمل بودن

کانتینر را میتوان به عنوان یک بسته قابل حمل در نظر گرفت که می توان آن را با ماشین، 

کشتی یا قطار حمل نمود. این بسته شامل تمام متعلقات یک نرم افزار به استثنای هسته 

سیستم عامل آن است. این بسته قابل حمل از کانتینر ها را image نام گذاری میکنند. در 

مثال اول نام image همان dockerinaction/hello_world است. به طور کلی یک image شامل 

تمام فایل های لازم برای اجرای یک نرم افزار به تنهایی در داخل کانتینر می باشد. شما می توانید از یک image چندین کانتینر بسازید ولی توجه داشته باشید که فایل سیستم های آن ها از یک دیگر مستقل می باشند و فایلی را به اشتراک نمی گذارند. برای راحتی در دسترس بودن image ها داکر یک registry  و index ایجاد کرده است که به طور عمومی از همه جا قابل دسترس باشد. شما می توانید خود نیز registry خود را داشته باشید.

داکر چه مشکلاتی را حل میکند؟

۱-سازماندهی: داکر وابستگی های هر نرم افزار را ایزوله کرده و از یکدیگر مستقل میکند. شما نگران به روز رسانی نرم افزار خود و تاثیر آن بر روی دیگر نرم افزار ها نخواهید بود.

در سیستم های عامل نصب نرم افزار ها و وابستگی آن ها مانند شکل زیر می باشد

داکر نحوه عمل کردی نرم افزار ها و استفاده از وابستگی های آن ها را به شکل زیر تغییر داده است. چگونگی مدیریت سر بار فضا توسط داکر را در آینده توضیح خواهیم داد

بهبود قابلیت جابه جایی

در داکر شما می توانید یک نسخه از نرم افزار خود را در سیستم عامل مورد نظر و با وابستگی های آن بنویسید و آن را بر روی پلتفرم های مختلف مانند linux, mac, windows اجرا کنید. توجه نمایید که این امکان بر روی windows و mac با ساخت یک ماشین لینوکسی توسط داکر امکان پذیر می شود (مانند زبان برنامه نویسی java

که اجرای آن بر روی پلتفرم های مختلف نیاز به jvm دارد). برای اجرای مناسب یک نرم افزار بر روی پلتفرم های مختلف باید وابستگی های آن بر روی هر دو پلتفرم موجود باشد تا نرم افزار شما قابل اجرا باشد. داکر به صورت اوریجینال برای لینوکس نوشته شده است. 

محافظت

در داکر نرم افزار را از سیستم عامل ایزوله میکنیم به عنوان مثال اگر برنامه توسط یک هکر نوشته شده باشد اجرای آن در کانتینر تاثیری بر روی فایل سیستم سیستم عامل اصلی نخواهد گذاشت. همچنین اگر برنامه شما دارای حفره های امنیتی بالاست اجرای آن در یک کانتینر داکر می تواند نگرانی شما بابت حمله ها بر طرف کند. کانتینر مانند یک زندان عمل میکنند که اجازه دسترسی به بیرون آن نیست مگر اینکه خود کاربر این اجازه را به کانتیر بدهد. شکل زیر گویای این مساله می باشد.

مجرد سازی

داکر این امکان را به شما میدهد که کاری دشوار را به سادگی انجام دهید. باید در نظر داشته باشید که اجرای هر نرم افزار با نرم افزار دیگر متفاوت است بنابراین این امر نیز در داکر تفاوت هایی دارد. اما نصب و حذف نرم افزارها در داکر مشابه هم می باشد و بعد از حذف نرم افزار شما میتوانید اطمینان داشته باشید که سیستم عامل شما به تمیزی قبل از نصب آن بازگشته است. 

تا امروز داکر می تواند هر نرم افزاری که قابلیت اجرا بر روی لینوکس داشته باشد را اجرا کند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *