در ماشین مجازی یا VM تمام مراحل نصب و راهاندازی و استفاده از سیستم (حتی بایوس) مجازی سازی میشود.
لذا در ماشین مجازی میتوان هر نوع سیستمعاملی را (فارغ از این که سیستمعامل میزبان یا Host چی هست) نصب کرد.
پس در نتیجه VM ها محیطهایی کاملا ایزوله هستند که کرنل ، منابع و تمام ویژگیهای یک سیستم واقعی را دارند. (حتی بایوس ، گراب و … )
توضیح در خصوص Container
اما در Container این طور نیست !
درسته که Container هم نوعی محیط ایزوله است اما کرنل یک Container با کرنل Host یا میزبان ، مشترک است.
لذا در این شرایط نمیتوان در یک میزبان یا Host لینوکسی ، یک Container با سیستمعامل ویندوز داشت.
اما میتوان کلی Container با سیستمعامل اوبونتو ، Centos و … داشت. چرا ؟ چون کرنل بین میزبان و Container مشترک است لذا با یک کرنل میتوان مجموعهای از ابزارها رو داشت که تشکیل Ubuntu رو میدن یا مجموعهای از ابزارها رو داشت که تشکیل Centos رو میدن.
همچنین در یک Container دیگر مواردی مثل بایوس و … وجود ندارد.
در واقع Container و پروسههای درون آن به مستقیم با کرنل Host یا میزبان مرتبط هستند.
کدام بهتر است ؟
مقایسهی این دو برای مطرح کردن سوال اینکه کدام بهتر است ، کاملا اشتباه است.
این دو مفهوم ، دو دستآورد کاملا جدا از هم هستند که هر کدام دارای ویژگیهای منحصر به فردی هستند.
لذا متناسب با مسئله یا مشکلی که در پیش رو داریم. باید از یکی به عنوان راه حل استفاده کنیم.
در واقع باید ببینیم که کدام یک نیاز ما را برآوردن میکند.