
تفاوت های اصلی بین مجازی سازی و کانتینری سازی چیست و هر فناوری برای چه چیزی استفاده می شود؟
مجازی سازی (VMs). ماشین مجازی انتزاعی از سخت افزار فیزیکی است — تبدیل یک سرور به چندین سرور. یک hypervisor بین میزبان و ماشین های مجازی قرار می گیرد و CPU، حافظه و فضای ذخیره سازی را با هم ترکیب می کند. هر VM شامل یک کپی کامل از یک سیستم عامل مهمان، به علاوه برنامه و همه کتابخانه ها است. Hypervisor (VMM) ایزوله سازی را اعمال می کند، و مرز آن توسط افزونه های مجازی سازی CPU (Intel VT-x / AMD-V) به کمک سخت افزار می شود.
هایپروایزرها دو نوع هستند:
- نوع 1 (فلز برهنه): مستقیماً روی سخت افزار اجرا می شود. نمونه های تمیز VMware ESXi/vSphere، Microsoft Hyper-V و Xen هستند. KVM یک مورد ترکیبی است: یک ماژول هسته لینوکس که هسته را به یک Hypervisor نوع 1 تبدیل می کند در حالی که میزبان هنوز فرآیندهای معمولی را اجرا می کند.
- نوع 2 (میزبانی): به عنوان یک برنامه کاربردی در یک سیستم عامل معمولی (VirtualBox، VMware Workstation) اجرا می شود. مناسب برای ماشین های شخصی
Containerization. یک کانتینر کد و تمام وابستگی های آن (زمان اجرا، کتابخانه ها، تنظیمات) را بسته بندی می کند و سیستم عامل را به جای سخت افزار مجازی می کند. کانتینرها هسته سیستم عامل میزبان را به اشتراک می گذارند و به عنوان فرآیندهای ایزوله در فضای کاربر اجرا می شوند. در لینوکس از فضاهای نام (جداسازی) و cgroups (حسابداری منابع و محدودیت ها) استفاده می شود که با قابلیت ها، seccomp، MAC (SELinux/AppArmor)، فضاهای نام کاربری و حالت بدون ریشه سخت تر می شوند. اشتراکگذاری هسته به معنای سازگاری با خانواده سیستمعامل است: ظروف لینوکس به هسته لینوکس نیاز دارند، بنابراین Docker Desktop در Windows/macOS بیصدا یک لینوکس VM سبک وزن را اجرا میکند. داکر کانتینرها را محبوب کرد، اما فرمت آن توسط OCI استاندارد شده است. زمانهای اجرا دیگری نیز وجود دارد - containerd، CRI-O، Podman.
تفاوت های کلیدی:
- اندازه: تصاویر ظرف معمولاً از چند مگابایت تا صدها مگابایت هستند. ماشین های مجازی GB هستند (ترتیب های بزرگ و نه اعداد ثابت).
- راه اندازی: ظروف در ثانیه / میلی ثانیه شروع می شوند. ماشین های مجازی باید یک سیستم عامل کامل را بوت کنند.
- سربار: ظروف نیازی به سیستم عامل جداگانه در هر برنامه ندارند - تراکم بالاتر، هزینه های مجوز کمتر.
- ایزوله/امنیت: ماشین های مجازی انزوای قوی تر و مبتنی بر سخت افزار را ارائه می دهند. کانتینرها ایزوله ضعیفتر و مبتنی بر نرمافزار را ارائه میدهند (خطر فرار کانتینر از هسته مشترک). نقطه میانی، زمانهای اجرای جعبهشنی (gVisor، Kata Containers، Firecracker) است که به انزوا در سطح VM نزدیک میشوند.
هر کدام برای چه مواردی استفاده می شود:
- VMs: در حال اجرا سیستم عامل های مختلف بر روی یک سرور، حجم کاری فشرده یا یکپارچه، و ایزوله قوی (برنامه های چند اجاره ای، قدیمی).
- ظروف: توسعه بومی ابری، میکروسرویس ها، CI/CD، قابل حمل بودن، و مقیاس بندی افقی سریع (سازماندهی شده توسط Kubernetes).
در عمل این دو مکمل هستند: کانتینرها اغلب در داخل ماشین های مجازی اجرا می شوند تا تحویل چابک را با ایزوله قوی ترکیب کنند.
