بیشتر اپیکیشن ها روی سرور هستند، قبلا به بر اساس هر اپ یه سروری داشتیم که روش اجرا بود و سیستم عامل ها راهی برای اینکه چند اپ روی یه سرور اجرا کنیم رو نداشتن.
داستان معمولا اینجوری بود هر موقع که شرکت نیاز به اپ جدید داشت تیم IT سرور جدید میگرفت و بیشتر اوقات کسی نیاز لازم برای performance اپ رو نمی دونست این یعنی تیم IT باید بیشبینی میکردن و سرور تهیه میکردن، اخرین چیزی که کسی میخاست اینه که قدرت سرور کم باشه و در اجرا تراکنش ها ناتوان باشه که باعث از دست دادن مشتری و ضرر شرکت بشه .
در نتیجه تیم IT راهی نداشت جز اینکه یه سرور قوی تهیه کنند، این عمل باعث شد تا تعداد زیادی سرور فقط از ۵ تا ۱۰ درصد ظرفیتشون استفاده کنند که خودش بانی هدر رفتن مقدار زیادی سرمایه و منابع شرکت بود
وقتی VM اومد فرایند کلا عوض شد، ماشین مجازی هدیه داد به دنیا؛ تکنولوژی که اجازه میداد ما چند اپ رو به صورت امن داخل یه سرور اجرا کنیم و مقدار زیادی از هزینه های و هدر رفتن منابع شرکت رو کم کنیم، تیم IT وقتی شرکت اپ جدید میخواست نیاز نبود یه سرور تهیه کنه فقط یه ماشین مجازی روی سروری که میخواست درست میکرد(فضا های جدا داخل یک سرور یا به زبون دیگه مجازی سازی سخت افزار).
اما همیشه مشکل وجود داره هرچقدر که ماشین مجازی خوب بود ولی عالی نبود.
هر ماشین مجازی نیازمند یک سیستم عامل بود که هر سیستم عامل نیازم مند بروز بودن، monitoring و به license داشت همه این ها باعث مصرف هزینه عملیاتی (OpEx) و هزینه سرمایهای (CapEx) های شرکت بود.
این مدل هم مشکالت خودش رو داشت به عنوان مثال کندی در boot، سختیش در portability( جا بجایی بین نرم افزار های شبیه ساز) و ...
برای مدت طولانی شرکت های بزرگی مثل گوگل از تکنولوژی Container استفاده میکردن برای جبران کاستی های VM; تفاوت اصلی این دو مدل این اس که هر Container به یک سیستم عامل نیاز نداره(مجازی سازی یه سطح اومد بالا) در اصل تمام Container ها روی یک host و سیستم عامل هستند(شبیه سازی رو لایه application هست و همه از یه kernel مشترک استفاده می کنند).
این مدل یه حجم عظیمی از منابع سرور رو آزاد کرد، با مشترک بودن سیستم عامل هزینه licensing و مشکلات بروزرسانی سیستم عامل کم شد و نگه داریش راحت تر شد در نتیجه مصرف هزینه عملیاتی (OpEx) و هزینه سرمایهای (CapEx) های شرکت حفظ شد.
تنها منبع بنده کتاب docker deep dive