مرور و بررسی داکر (Docker) پلت فرم اجرای نرم افزارهای توزیع شده با بهره گیری از ایده کانتینر ها
معرفی داکر
داکر (Docker) یک پروژه متنباز است که فرایند استقرار نرمافزارها و سرویسها رو با معرفی مفهوم “Container”ها سرعت میبخشد. داکر پروژهٔ متنبازی است که توسعه های نرمافزارهای کاربردی را درون کانتینر نرمافزاری به وسیلهٔ فراهم کردن لایهٔ انتزاعی اضافهای فراهم میکند.بعضی از افراد فکر می کنند داکر، ابزار مجازی سازی مانند VMWare یا ویرچوال باکس است. عده ای نیز فکر می کنند داکر ابزار مدیریت ماشین مجازی مانند وگرنت (Vagrant) است؛ ولی در واقع اینگونه نیست. به عبارت ساده، داکر یک پلت فرم جدید و متفاوت برای توسعه دهندگان و مدیران سیستمهاست که به آنها در ساخت، عرضه و اجرای نرم افزارهای های توزیع شده با استفاده از کانتینرها کمک می کند. کانتینر یا محفظه، به توسعه دهنده اجازه می دهد تا یک نرم افزارهای را با تمام بخش های مورد نیاز مانند کتابخانه ها و دیگر وابستگی ها، بسته بندی کند و به عنوان یک پکیج مجزا بر روی سیستم های دیگر استفاده کند. برای نصب و راه اندازی داکر روی اینجا کلیک کنید.
برای اطلاعات بیشتر در مورد این پلتفورم می توانید به این آدرس مراجعه فرمایید:
https://www.docker.com/what-docker
با توجه به اینکه فعلاً از طرف داکر تحریم هستیم خودتان برای استفاده از وی پی ان آماده کنید.
برخی از موارد استفاده از داکر در شکل زیر آورده شده است:
- ویژگیهای قابل توجه داکر در زیر آمده است:
- – متنبازی بودن: Containerهای داکر برمبنای استانداردهای متنباز هستند و باعث میشود که روی تمام توزیعهای اصلی لینوکس و سیستم عامل مایکروسافت قابلیت اجرا داشته باشند.
- امنیت مطلوب: Containerها برنامهها را از یکدیگر و از زیرساخت خود جدا میکنند و یک لایه اضافه برای محافظت از برنامهها نیز در اختیار قرار میدهند.
- سبک بودن: Containerهایی که روی یک ماشین اجرا میشوند از هسته سیستم عامل مشترکی استفاده میکنند بنابراین به سرعت آغاز به اجرا کرده و به نحو بهتری از رم استفاده میکنند. Imageها از فایلسیستمهای لایهبندی شده ساخته میشوند پس میتوانند فایلهای مشترک را به اشتراک گذاشته و به نحو کاراتری از حافظه دیسک استفاده کنند.
شاید میتوان حدس زد که داکر، نسل بعدی ماشینهای مجازی و به عنوان جایگزینی برای آنهاست هرچند خود از ماشینهای مجازی استفاده کرده ولی کمک میکند که ماشینهای مجازی با سربار کمتری بتوانند کارایی لازم را داشته باشند.
- مقایسه داکر در برابر ماشین مجازی
با توجه به اینکه مجازی سازی مبتنی تنها دسترسی به سخت افزار را ارایه میکند، در هر VM باید سیستم عاملی نصب کرد و در نتیجه، در سکو، چندین سیستم عامل وجود خواهد داشت که به سرعت منابع سرویس دهنده نظیر پردازنده، حافظه و پهنای باند را می بلعند. در مقابل، Container با رعایت انزوا، در روی یک سیستم عامل قرار میگیرند که منجر به بهره برداری بسیار بهینه تر منابع و همچنین افزایش سرعت ایجاد، راه اندازی و خاتمه Containerمیشود. درواقع تمام Containerهایی که در یک ماشین اجرا میشوند، هسته سیستم عامل میزبان را به اشتراک میگذارند وفقط یک هسته، یک زمانبند و یک نمونه از مدیر حافظه هسته وجود دارد. آغاز به کار کردن و خاتمه دادن به حامل تقریبا مشابه شروع و خارج شدن یک برنامه میباشد. در واقع، برخلاف ماشینهای مجازی، برنامههایی که در کانتینرهای Docker اجرا میشوند، به دلیل اینکه هیچ لایه اضافی بین برنامه در حال اجرا و سیستم عامل میزبان وجود ندارد، هیچ منبعی توسط اجرای هسته سیستم عامل مجزا، افزونه زاید یا شبیه سازی سختافزار مجازی، به هدر نمیرود.
- مولفه های تشکیل دهنده 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/
از ویژگیهایی که مربوط به داکر میشود ، به Swarm میتوان اشاره کرد که قابلیت مدیریت چند سیستم دارای Docker رو ارایه میدهد و میتوان از یک نقطه به صورت توزیع شده Application خود را پیادهسازی کینم و دیگر به این فکر نکنیم که الان باید روی کدام سیستم Container را بالا بیارم.
به عنوان مزیت دیگر میتوان به HealthCheck اشاره کرد که با وجود Swarm دیگر نگرانی این را نداریم که اگر Application از دسترس خارج شد. با وجود این ویژگی در اسرع زمان، در یکی از نقاط در دسترس Application به صورت اتوماتیک اجرا خواهد شد.
آدرس کانال تلگرام سایت بیگ دیتا:
آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel
جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.
بازدیدها: 2549
برچسبdistributed Docker Docker Hub HealthCheck image KVM Swarm vmware حامل داکر داکر رجیستری داکر هاب کانتینر ماشین مجازی مجازی سازی مقایسه داکر مقایسه داکر در برابر ماشین مجازی
همچنین ببینید
پنج راه که واقعیت مجازی (VR) جهان را تغییر خواهد داد
عناوين مطالب: 'واقعیت مجازی چیست؟پنج راه که واقعیت مجازی جهان را تغییر خواهد داد1 – …
بصری سازی گراف شبکه های اجتماعی به روش الگوریتم OO یا (OpenOrd)
یکی از مسائل مهم حوزه گراف کاوی، ترسیم گراف یا بصری سازی است. یک گراف، …