در مقاله قبل در مورد Docker توضیحاتی ارائه شد. اما شاید برای شما این سوال پیش آمده باشد کاری که Docker انجام می دهد توسط VMها یا ماشین های مجازی نیز بر روی Serverها قابل انجام است و در این صورت چه لزومی دارد که ما از این تکنولوژی استفاده نماییم؟
در این مقاله تفاوت های Docker و VMها معرفی شده و مزیت های استفاده از تکنولوژی Docker ارائه خواهد شد.
همان طور که قبلا نیز گفته شد با استفاده از تکنولوژی Docker می توان همه برنامه هایی که در بسترهای متفاوت توسعه داده شده است و برای اجرا نیازمند منابع گوناگون هستند را بر روی یک Server قرار داده و از آن ها استفاده نمود. برای این کار لازم است که برنامه ها را به صورت Containerهایی ایجاد نموده و در صورت نیاز آن ها را استفاده نمود. به این ترتیب برای مثال برنامه هایی که تحت ویندوز و لینوکس اجرا می شوند هر دو می توانند روی یک Server قرار گیرند.
این که بتوان برنامه های مختلف را روی یک Server قرار داد و آن ها را اجرا نمود توسط ماشین مجازی نیز قابل انجام است. به این صورت که می توان بر روی یک Server ماشین های مجازی مختلفی ایجاد نمود و روی هر کدام از آن ها سیستم عامل و نرم افزارهای مجزایی را نصب نمود. به این ترتیب برای مثال برنامه هایی که تحت ویندوز قابل اجرا هستند را روی ماشین ویندوزی و برنامه هایی که تحت لینوکس اجرا می شوند را روی ماشین لینوکسی قرار داد.
اما تفاوت استفاده از Docker و VM در چیست؟
شکل زیر شمایی از Server و منابع آن در هر دو تکنولوژی را نمایش می دهد.
طبق آن چه در شکل مشاهده می نمایید:
هنگام استفاده از ماشین مجازی برای هر کدام از ماشین های مجازی باید سیستم عامل مجزایی نصب شود که این مستلزم منابع بیشتر نرم افزاری و سخت افزاری بوده و همچنین نگهداری آن ها نیز مشکل تر خواهد بود. اما در Docker نیازی به نصب سیستم عامل مجزا وجود ندارد و تنها با قرار دادن Containerهای مختلف بر روی ماشین قادر به اجرای برنامه ها خواهیم بود.
در ماشین های مجازی منابع سخت افزاری و نرم افزاری Server بین همه ماشین ها تقسیم می شود و در این صورت ممکن است در زمانی که یک ماشین منایع بلااستفاده داشته باشد، ماشین دیگری نیاز به منابع بیشتری داشته باشد و با کمبود منابع مواجه شده و از سرویس دهی خارج شود. اما در Docker تقسیم بندی ثابتی بین منابع انجام نشده است و هر برنامه به کل منابع Server دسترسی داشته و بسته به نیاز خود در هر زمان منابع را مورد استفاده قرار می دهد. در این صورت امکان سرویس دهی بهتر خواهد بود.