امروز به درک عمیقتری از داکر و مفهوم containerization خواهیم رسید. با ما همراه باشید.
مروری بر مفهوم containerization و virtualization:
مجازیسازی (Virtualization) چیست؟
مجازیسازی یک فناوری است که به شما اجازه میدهد منابع سختافزاری را به صورت منطقی تقسیم کنید. این فرآیند معمولاً با استفاده از یک لایۀ نرمافزاری به نام هایپروایزر (Hypervisor) انجام میشود که به شما امکان میدهد چندین ماشین مجازی (VM) را روی یک سرور فیزیکی اجرا کنید.
کانتینریسازی (Containerization) چیست؟
در مقابل، کانتینرسازی به شما امکان میدهد برنامهها و وابستگیهای آنها را در یک واحد سبک به نام “کانتینر” قرار دهید. کانتینرها از سیستمعامل میزبان استفاده میکنند و برخلاف ماشینهای مجازی، نیازی به سیستمعامل جداگانه ندارند. حال که با تعاریف کلی آشنا شدیم، بیایید به تفاوتهای اصلی بین این دو فناوری نگاهی بیندازیم:
مقایسۀ دو مفهوم Virtualization و Containerization:
تفاوتها:
- مصرف منابع:
- در مجازیسازی، هر ماشین مجازی نیاز به یک سیستمعامل کامل دارد، که باعث افزایش مصرف RAM و CPU میشود.
- کانتینرها سبکتر هستند، زیرا همۀ آنها از یک کرنل مشترک یا حداقل از خصوصیات مشترک در هستۀ سیستمعامل استفاده میکنند.
- سرعت راهاندازی:
- راهاندازی ماشینهای مجازی معمولاً زمانبر است، چرا که باید سیستمعامل به صورت کامل بوت شود.
- کانتینرها بسیار سریعتر راهاندازی میشوند زیرا تنها شامل اجزای مورد نیاز برنامه هستند
این دو تکنولوژی ابزارهایی هستند که به ما کمک میکنند از منابع سختافزاری بهینهتر استفاده کنیم. و با وجود تفاوتهایی که بین آنها هست از شباهتها و خصوصیات مشابهی نیزبرخوردار هستند.
شباهتها:
- هدف اصلی: استفادۀ بهینه از منابع
اولین شباهت این دو مفهوم، هدف مشترک آنها به شمار میرود. چه از یک ماشین مجازی استفاده کنیم، چه از کانتینرها، هدف اصلی این است که منابع سختافزاری را بهینهتر به کار بگیریم. با استفاده از این تکنولوژیها، میتوانیم چندین سرویس یا اپلیکیشن را برروی یک سرور واحد اجرا کنیم.
- ایزولهسازی (Isolation)
هم در مجازیسازی و هم در کانتینرها، بحث ایزولهسازی یکی از نکات کلیدی به شما میرود. ماشینهای مجازی هر کدام سیستمعامل جداگانه خود را دارند، و کانتینرها نیز هر کدام محیط کاری خود را دارند. این ایزولهسازی باعث میشود که مشکلات یا خرابیهای یک سرویس برروی سرویسهای دیگر تأثیر نگذارد. - قابلیت جابهجایی (Portability)
در هر دو فناوری، امکان جابهجایی راحت وجود دارد. شما میتوانید یک ماشین مجازی یا کانتینر را از یک سرور به سرور دیگر منتقل کنید بدون آنکه نیاز باشد تنظیمات را از نو انجام دهید. این قابلیت برای محیطهای کلاود بسیار اهمیت دارد.
در نتیجه میتوان گفت هر کدام استفادۀ خاص خود را دارند:
- مجازیسازی بیشتر برای اجرای چندین سیستمعامل برروی یک سختافزار استفاده میشود.
- کانتینرسازی بیشتر برای مدیریت و استقرار برنامهها در محیطهای مختلف مانند development و production کاربرد دارد.
چگونگی بوجود آمدن داکر:
توسعۀ داکر مدیون تکنولوژی LXC یا کانتینرسازی لینوکس است. LXC اولین فناوری Containerization بود که به طور گستردهای در لینوکس استفاده شد. ایدۀ اصلی LXC این بود که بتوان محیطهای مجازی ایجاد کرد که شبیه به ماشینهای مجازی عمل کنند، اما بهجای استفاده از هایپروایزرها، مستقیماً از کرنل لینوکس بهره ببرند. در واقع، داکر از امکاناتی مثل cgroups و namespaces که توسط کرنل لینوکس ارائه میشوند، استفاده میکند. اما چیزی که داکر را خاص کرد، این بود که این تکنولوژیهای پیچیده را در یک رابط کاربری ساده و کاربردی طراحی کرد.
داکر در اوایل مسیر:
اوایل، داکر فقط به عنوان یک ابزار داخلی در dotcloud استفاده میشد. اما وقتی developerها دیگر خارج از شرکت شروع به استفاده از آن کردند، مشخص شد که پتانسیل بسیار بالایی دارد. در نتیجه، dotcloud تصمیم گرفت تمرکز اصلی خود را روی توسعۀ داکر قرار دهد و حتی برند شرکت را به Docker Inc تغییر داد. داکر از سال ۲۰۱۳ به سرعت رشد کرد و جامعه بزرگی از developerها و شرکتها را جذب کرد. در سال ۲۰۱۴، Docker Inc یک استاندارد به نام Docker Hub معرفی کرد که یک ریپازیتوری مرکزی برای ایمیجها بود. این حرکت باعث شد developerها بتوانند به راحتی ایمیجهای آمادهای از برنامهها و سرویسها را پیدا و استفاده کنند. در سالهای بعد، داکر با ابزارها و فناوریهای جدیدی مثل Docker Compose و Docker Swarm گسترش پیدا کرد که مدیریت کانتینرها و هماهنگی میان آنها را سادهتر کرد.
داکر در مسیر توسعه:
Docker Inc پروژه ای تحت عنوان moby را برای توسعۀ داکر در نظر گرفت. در این پروژه دو نسخه از داکر با نامهای Docker-CE و Docker-EE در حال توسعه هستند.
Docker-CE یا همان Community Edition نسخهای رایگان و opensource از داکر است که برای developerها و تیمهایی طراحی شده که میخواهند به سرعت کانتینرها را تست و توسعه دهند. یکی از مزایای اصلی Docker CE این است که به طور مداوم بهروزرسانی میشود و از یک جامعه بزرگ developerها پشتیبانی میگیرد.
در مقابل، Docker-EE یا همان Enterprise Edition نسخهای تجاری و پولی از داکر است و برای سازمانهایی طراحی شده که نیاز به قابلیتهای پیشرفته، امنیت بیشتر و پشتیبانی رسمی دارند. همچنین، این نسخه در سه سطح مختلف عرضه میشود: Basic، Standard و Advanced. هر سطح قابلیتها و خدمات متفاوتی را ارائه میدهد، بنابراین سازمانها میتوانند بسته به نیازهای خود، نسخه مناسب را انتخاب کنند.
امیدوارم که از این مقاله لذت برده باشید. برای دسترسی به مقالههای قبلی برروی این قسمت <<کلیک>> کنید. همچنین میتوانید از این قسمت برای دسترسی به ویکی داکر استفاده کنید.