خانه --> بسترهای پردازش توزیع شده --> مرور و بررسی داکر (Docker) پلت فرم اجرای نرم افزارهای توزیع شده با بهره گیری از ایده کانتینر ها

مرور و بررسی داکر (Docker) پلت فرم اجرای نرم افزارهای توزیع شده با بهره گیری از ایده کانتینر ها

معرفی داکر

داکر (Docker) یک پروژه متن‌باز است که فرایند استقرار نرم‌افزارها و سرویس‌ها رو با معرفی مفهوم “Container”ها سرعت می‌بخشد. داکر  پروژهٔ متن‌بازی است که توسعه های نرم‌افزارهای کاربردی را درون کانتینر نرم‌افزاری به وسیلهٔ فراهم کردن لایهٔ انتزاعی اضافه‌ای فراهم می‌کند.بعضی از افراد فکر می کنند داکر، ابزار مجازی سازی مانند VMWare یا ویرچوال باکس است. عده ای نیز فکر می کنند داکر ابزار مدیریت ماشین مجازی مانند وگرنت (Vagrant) است؛ ولی در واقع این‌گونه نیست. به عبارت ساده، داکر یک پلت فرم جدید و متفاوت برای توسعه دهندگان و مدیران سیستم‌هاست که به آنها در ساخت، عرضه و اجرای  نرم افزارهای های توزیع شده با استفاده از کانتینرها کمک می کند. کانتینر یا محفظه، به توسعه دهنده اجازه می دهد تا یک  نرم افزارهای را با تمام بخش های مورد نیاز مانند کتابخانه ها و دیگر وابستگی ها، بسته بندی کند و به عنوان یک پکیج مجزا بر روی سیستم های دیگر استفاده کند. برای نصب و راه اندازی داکر روی اینجا کلیک کنید.

برای اطلاعات بیشتر در مورد این پلتفورم می توانید به این آدرس مراجعه فرمایید:

https://www.docker.com/what-docker

با توجه به اینکه فعلاً از طرف داکر تحریم هستیم خودتان برای استفاده از وی پی ان آماده کنید.

 برخی از موارد استفاده از داکر در شکل زیر آورده شده است:

داکر
Docker

  • ویژگی‌های قابل توجه داکر در زیر آمده است:
  1. – متن‌بازی بودن: Containerهای داکر برمبنای استاندارد‌های متن‌باز هستند و باعث می‌شود که روی تمام توزیع‌های اصلی لینوکس و سیستم عامل مایکروسافت قابلیت اجرا داشته باشند.
  2. امنیت مطلوب: Containerها برنامه‌ها را از یکدیگر و از زیرساخت خود جدا می‌کنند و یک لایه اضافه برای محافظت از برنامه‌‌ها نیز در اختیار قرار می‌دهند.
  3. سبک بودن: Containerهایی که روی یک ماشین اجرا می‌شوند از هسته سیستم عامل مشترکی استفاده می‌کنند بنابراین به سرعت آغاز به اجرا کرده و به نحو بهتری از رم استفاده می‌کنند. Imageها از فایل‌سیستم‌های لایه‌بندی شده ساخته می‌شوند پس می‌توانند فایل‌های مشترک را به اشتراک گذاشته و به نحو کاراتری از حافظه دیسک استفاده کنند.

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

داکر
Docker Survey

  • مقایسه داکر در برابر ماشین مجازی

با توجه به اینکه مجازی ­سازی مبتنی  تنها دسترسی به سخت­ افزار را ارایه می­کند،‌ در هر VM باید سیستم عاملی نصب کرد و در نتیجه، در سکو، چندین سیستم عامل وجود خواهد داشت که به سرعت منابع سرویس­ دهنده نظیر پردازنده،‌ حافظه و پهنای باند را می بلعند. در مقابل، Container با رعایت انزوا، در روی یک سیستم عامل قرار می­گیرند که منجر به بهره­ برداری بسیار بهینه­ تر منابع و همچنین افزایش سرعت ایجاد، راه اندازی و خاتمه Containerمی­شود. در‌واقع تمام Containerهایی که در یک ماشین اجرا می‌شوند، هسته سیستم عامل میزبان را به اشتراک می‌گذارند وفقط یک هسته، یک زمانبند و یک نمونه از مدیر حافظه هسته وجود دارد. آغاز به کار کردن و خاتمه دادن به حامل تقریبا مشابه شروع و خارج شدن یک برنامه میباشد. در واقع، برخلاف ماشین‌های مجازی، برنامه‌هایی که در کانتینرهای Docker‌ اجرا می‌شوند، به دلیل این­که هیچ لایه اضافی بین برنامه در حال اجرا و سیستم عامل میزبان وجود ندارد، هیچ منبعی توسط اجرای هسته سیستم عامل مجزا، افزونه زاید یا شبیه سازی سخت‌افزار مجازی، به هدر نمی‌رود.

مقایسه Container و VMWare
Container Vs VMWare

  •  مولفه های تشکیل دهنده Docker

Docker daemon: سرویس اصلی داکر که وظیفه مدیریت و اجرا کردن کانتینر ها را به عهده داره.
Docker CLI: اینترفیس کامند لاینی هست که باهاش به Docker Daemon دستور میدیم

Containerو Docker image: کانتینر، سیستم‌ در حال اجرایی است که توسط یک تصویر مشخص، تعریف می‌شود. تصاویر و کانتینرها را می‌توان به عنوان برنامه‌ها و فرآیندها در نظر گرفت. در‌واقع، حامل داکر می‌تواند به عنوان تصویر داکری درنظر گرفته شود که در حال اجرا است. از منظر شیء گرایی، تصاویر را می‌توان به عنوان کلاس‌ها و حامل ها را به عنوان اشیاء درنظر گرفت. در‌واقع حامل ها نمونه‌ هایی از تصاویر هستند. می‌توان چند حامل را از یک تصویر واحد ساخت، بطوری که انزوا بین حامل ها برقرار است.

Resource Managment: داکر ابزارهایی را به منظور سهولت ایجاد و کارکردن با حامل­ها فراهم می­کند. LXC هسته داکر را تشکیل می­دهد. همان­طور که در بخش قبلی بیان شد، LXC برای انزوای حامل­ها از میزبان، از فضاهای نام سطح هسته استفاده می­کند. فضای نام کاربر، پایگاه داده کاربر کانتینرها و میزبان را جدا و تضمین می­کند که کاربر ریشه حامل، مجوز ریشه در میزبان را نداشته باشد. جزء دیگر داکر که توسط LXC ارایه می­شود، cgroups است که مسئول مدیریت و محدودسازی استفاده منابع در حامل­ها است. همچنین cgroups معیارهای گوناگونی را از منابعی که مدیریت می­کند، به خارج عرضه می­کند(چاپ می­کند) و داکر نیز از این معیارها برای نظارت بر مصرف منابع فرآیندهای مختلف حامل­ها استفاده می­کند.

File System: آخرین جزء کلیدی داکر AuFS  یا Advanced Multi-Layered Unification Filesystem است که از آن به عنوان سیستم فایلی برای کانتینرها استفاده می­کند و این جزء وجه تمایز داکر با دیگر ابزارهای مبتنی بر حامل است. AuFS سیستم فایلی لایه ­ای است که می­تواند بطور شفاف یک یا چند سیستم فایل موجود را پوشش  دهد یا روی هم قرار دهد. AuFS قادر است چندین لایه را به نمایش واحدی از یک سیستم فایل ادغام کند. اگر نیاز باشد تا چند نسخه حامل از یک تصویر ساخته شود، برخلاف تصور، چندین نسخه از تصویر اصلی ساخته نمی‌شود، بلکه توسط مکانیزم copy_on_write، فقط تغییراتی که هر حامل ایجاد می‌کنند، در قسمت مجزایی ثبت می‌شود. در نتیجه، در مصرف حافظه و دیسک صرفه جویی و همچنین سرعت راه­اندازی داکر نیز افزایش می‌یابد. در بسیاری از حالات، تصاویر حامل داکر، نیازمند فضای دیسک و ورودی/خروجی کمتری نسبت به تصاویر دیسک VM معادل است .

Docker Repository: یک مزیت بزرگی که داکر ارائه میدهد، Registry آن هست. Registry را به چشم Repository ای از Image های مختلف ببینید. بزرگترین Registry مربوط میشود به Docker Hub که انواع و اقسام Image ها را میشود در آن پیدا کرد. یکی از ویژگی­های مهم داکر قابلیت جستجو، بارگیری و راه­ اندازی image های کانتینرها است که توسط دیگر توسعه دهندگان ایجاد شده­ ند. مکانی که تصاویر ذخیره می­شوند، رجیستری نام دارد، و داکر نیز یک رجیستری عمومی به نام Docker Hub ارایه می­کند.

مفهوم رجیستری در داکر معادل NPM در Node و RubyGems در Ruby است. در واقع رجیستری داکر سرویس یا برنامه ا­ی سمت سرویس­دهنده است که توسعه ­دهندگان می­توانند توسط آن تصاویر خود را در مخزن عمومی ذخیره(یا push) یا به اشتراک گذارند و دیگر توسعه دهندگان آن را بارگیری(یا pull) کنند(مانند GitHub). می­توان تصاویر مورد نظر را در سایت https://hub.docker.com/ نیز جستجو و مستندات آن را مشاهده کرد. رجیستری عمومی داکر شامل تصاویری از نرم افزارهای آماده اجرا از قبیل پایگاه ­های داده، سیستم­های مدیریت محتوا، محیط­ های توسعه، سرویس­ دهنده های وب و غیره هستند. بارگذاری یا بارگیری تصاویر تنها نیازمند ایجاد حساب کاربری(مجانی) در داکر است. در لینک زیر بین Docker و KVM از نظر کارایی منابع محاسباتی، حافظه، دیسک و شبکه تحت اجرای مجموعه ای از بارهای کاری، ارزیابی بسیار خوبی صورت گرفته است.

 https://hub.docker.com/

راه حل داکر
Docker Solution

از ویژگی‌هایی که مربوط به داکر میشود ، به Swarm میتوان اشاره کرد که قابلیت مدیریت چند سیستم دارای Docker رو ارایه میدهد و میتوان از یک نقطه به صورت توزیع شده Application خود را پیاده‌سازی کینم و دیگر به این فکر نکنیم که الان باید روی کدام سیستم Container را بالا بیارم.

به عنوان مزیت دیگر میتوان به HealthCheck اشاره کرد که با وجود Swarm دیگر نگرانی این را نداریم که اگر Application از دسترس خارج شد. با وجود این ویژگی در اسرع زمان، در یکی از نقاط در دسترس Application به صورت اتوماتیک اجرا خواهد شد.

 

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

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