تفاوت Container با ماشین مجازی در چیست؟

اگر یک برنامه نویس یا تکنسین IT هستید ، احتمالا این شانس را داشته اید که حداقل یک بار کلمه Docker را بشنوید. یک ابزار مناسب برای آن چه که در اصطلاح به آن Packing ، Shipping و Running Application یا همان راه اندازی اپلیکیشن ها توسط مفهومی به نام Containers می گویند.

از آن جایی که تمام کمپانی های به نام دنیا مانند Google ، VMware و Amazon سرویس هایشان را طوری می سازند که از داکر پشتیبانی نماید ، اهمیت آن مشخص است.

در قدم اول برای اینکه تفاوت Container و Virtual Machine را بهتر متوجه شوید ، نگاهی خواهیم داشت به مفاهیم اولیه مجازی سازی که ممکن است برای برخی از خوانندگان تکراری باشد.

Container و VM چیست ؟

هدف Container ها و ماشین های مجازی یکسان است. آن ها یک Application را به همراه تمام متعلقاتش ( با یا بدون سیستم عامل میزبان ) ایزوله می کنند ، به طوری که بتواند در هر محیطی که انتقال داده می شود ، اجرا گردد. . می دانیم که از این طریق به دلیل استفاده موثر از منابع پردازشی ، مصرف انرژی و هزینه نیز کاهش می یابد.

تفاوت اصلی Container ها و VM ها در رویکرد معماری آن ها است. پس در ادامه مقاله با رویکرد معماری هر کدام آشنا می شویم.

ماشین های مجازی

ماشین مجازی یا VM یک شبیه سازی از کامپیوتر واقعی ست که برنامه ها را دقیقا مانند آن اجرا می کند. این شبیه سازی توسط Hypervisor انجام می شود. هایپروایزور به مجموعه نرم افزار ، میان افزار و سخت افزاری گفته می شود که ماشین های مجازی بر روی آن اجرا می شوند. به ماشین های فیزیکی که Hypervisor بر روی آن ها راه اندازی شده است در اصطلاح رایج Host Machine یا Host گفته می شود. در نتیجه هایپروایزور قادر خواهد بود که منابع پردازشی مانند RAM و CPU حقیقی را بین ماشین های مجازی به اشتراک بگذارد. VM ای که بر روی Host اجرا می شود ، Guest Machine نامیده می شود. Guest Machine شامل برنامه مورد نظر و هر آن چه که برای اجرای برنامه به آن نیاز است ( مانند  OS ، System Binaries و کتاب خوانه ها ) خواهد بود. در نتیجه واضح است که هر ماشین مجازی Network Adaptor و سایر اجزای مختص به خود را خواهد داشت. تصویر زیر از وب سایت FreeCodeCamp به خوبی گویای این موضوع است :

معماری ماشین مجازی

Container

Container ها مانند ماشین های مجازی منابع پردازشی خاص خود را از هاست دریافت می کنند. می توانند : فرمان ها را اجرا کنند. شبکه مجزا از یکدیگر داشته باشند. Route ها و IPTable های مختص به خود را دریافت نمایند. فایل سیستم ها در درون آن ها Mount می شود و بسیاری از ویژگی های دیگر مشترک با VM .

اما نکته در این است که در VM هر ماشین مجازی Kernel جدا از کرنل ماشین مجازی دیگر دارد. اما در کانتینر ها چنین نیست و کرنل سیستم عامل بین ماشین های مجازی به اشتراک گذاشته شده است.

معماری کانتینر در زمان استفاده از Docker Engine

در واقع تمام در معماری کانتینر ، کرنل یک سیستم عامل می تواند بین تمام Application ها به اشتراک گذاشته شود. تنها چیزی که Container ها را منحصر به فرد می کند کتابخوانه ها و باینری های هر Application است که با Application دیگر متفاوت است. این ایده استفاده از Kernel یکسان برای Application های ایزوله متفاوت باعث صرفه جویی بسیار زیادی در مصرف منابع پردازشی می گردد.

در مقاله بعدی از این سری این موضوع را بررسی خواهیم کرد که Docker دقیقا چه کاری را انجام می دهد؟

تصویر شاخص مقاله از : https://flipboard.com/topic/container

2 نظرات
  1. میلاد می گوید

    چه عجب یه مقاله در مورد داکر ما تو اینترنت دیدیم

  2. نوید داریا می گوید

    از توجه شما بسیار سپاسگذاریم. مقاله های بعدی از این سری نیز به زودی منتشر خواهند شد.

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.