هر ماشین مجازی شامل منابعی برای شبیه سازی یک سرور فیزیکی است. و سپس بر بالای این شبیه ساز سرور فیزیکی سیستم عامل قرار می گیرد و بر بالای سیستم عامل لایبری ها ( libraries) و باینری ها( binariy ) یا به اختصار Libs و bins و سپس نرم افزارهایی که به این لایبری ها وابسته اند.
کانتینر ( Container ) چیست؟
کانتینر در بالای یک سرور و سیستم عامل آن قرار می گیرد.این سیستم عامل معمولا ویندوز یا لینوکس هست. با لایبری های که به اشتراک گذاشته شده اند و کانتینر از این لایبری ها استفاده می کند. در واقع در خیلی از مواقع کانتینر حتی در بالای لایبری های اشتراکی یک سیستم عامل می توان جای داد.لایبری های اشتراکی به صورت رید آنلی ( read only ) هستند.با توجه به این ساختار و اشتراکی شدن منابع سیستم عامل و باینری ها (bins) و لایبری های(libs) آن ، از منابع حداکثر استفاده می شود و این بدین معنی است که شما بر روی یک سستم عامل چندین نرم افزار را می توانید به راحتی به صورت همزمان اجرا کنید.بنایراین کانتینرها بسیار سبک هستند و ظرف چند ثانیه می توانند لود (load) شوند.
همانطور که برای مدیریت ماشین های مجازی به یک مجازی ساز( virtualizor ) احتیاج هست برای مدیرت کانتینرها هم به یک کانتینر منجمنت ( container management ) نیاز است.
استفاده کانتینر در برنامه نویسی:
برنامه نویسان با استفاده از کانتینر تمام لایبری ها و باینری های مورد نیاز برای اجرای نرم افزار خود را در یک پکیج به صورت پورتیبل ( portable ) قرار می دهند. بدین صورت نرم افزار مورد نظر در تمام سیستم عامل ها و محیط ها قابل اجرا و تست است.
انواع کانتینر:
لینوکس کانتینر ( linux container ) یا LXC
لینوکس کانتینر با محدود و اولویت بندی کردن منابع سیستم عامل بدون نیاز به ماشین مجازی ، اجرای نرم افزارهای مختلف بر روی یک سیستم عامل را ، کاملا به صورت تفکیک شده انجام می دهد.ورژن های اولیه داکر از lxc استفاده می کردند.
داکر ( docker )
داکر با تغییر بعضی از ساختارهای LXC ، لینوکس کانتینر را پرتیبل تر ( portable) و انعطاف پذیر تر ساخت.
مزایا و معایب استفاده از کانتینر:
مزایا : صرفه جویی بسیار بهینه در منابع
کم شدن اندازه ی فایل های snapshot
کاهش و ساده سازی آپدیت پایه و امنیتی برنامه ها
قابلیت پورتیبل کردن نرم افزار
مقایسه کاربرد ماشین مجازی با کاربرد کانتینر:
اگر منابع سیستم عامل و سرعت لود برنامه ها برای شما از اهمیت بالایی برخوردار است،کانتینر می تواند گزینه ی خوبی باشد.
اما اگر شما برنامه ای مهم برای اجرا دارید و می خواهید تمام منابع یک سیستم عامل را به آن اختصاص دهید ، ماشین مجازی بهترین گزینه است. و البته امنیت محیط شما در زمان استفاده از ماشین مجازی بالاتر خواهد بود،چرا که هر ماشین مجازی سیستم عامل مشخص خود را داراست.
از طرف دیگر مجازی ساز ها ( virtualizor ) قابلیت هایی چون کلاسترینگ ( clustering )چند مجازی ساز با یکدیگر وlive migrate را به شما می دهند. به هر حال می توان از هر دو ابزار ماشین مجازی و کانتینر به طور همزمان استفاده کرد تا از مزایای هر دو بهره برد.