مشکل همیشگی: «روی سیستم من کار میکند»
یکی از دردسرهای رایج در توسعهی نرمافزار این است که برنامهای روی سیستم یک توسعهدهنده بهدرستی اجرا میشود اما روی سرور یا سیستم همکار دیگر با خطا مواجه میشود؛ دلیل آن معمولاً تفاوت نسخهی کتابخانهها، تنظیمات سیستمعامل یا وابستگیهای نصبنشده است. کانتینر (Container) دقیقاً همین مشکل را حل میکند: برنامه به همراه تمام وابستگیها، کتابخانهها و تنظیمات موردنیازش در یک بستهی ایزوله و قابلحمل بستهبندی میشود.
کانتینر در برابر ماشین مجازی
ماشین مجازی (Virtual Machine) با شبیهسازی کامل سختافزار، یک سیستمعامل کامل و مستقل اجرا میکند که حجم زیادی از منابع (چند گیگابایت) و زمان راهاندازی طولانی نیاز دارد. اما کانتینرها از هستهی (kernel) سیستمعامل میزبان استفاده میکنند و فقط فضای کاربری (user space) خودشان را ایزوله نگه میدارند. نتیجه این است که کانتینرها بسیار سبکتر (چند مگابایت تا چند صد مگابایت)، سریعتر در راهاندازی (چند ثانیه در برابر چند دقیقه) و کارآمدتر در استفاده از منابع سرور هستند.
داکر (Docker) محبوبترین پلتفرم کانتینرسازی است که ابزارهای ساخت، اجرا و مدیریت کانتینرها را در اختیار توسعهدهندگان قرار میدهد. با داکر میتوانید یک برنامه را یکبار بستهبندی کنید و همان بسته را روی لپتاپ شخصی، سرور تست و سرور تولید (production) بدون تغییر اجرا کنید. این قابلیت «یکبار بساز، همهجا اجرا کن» دلیل اصلی محبوبیت گستردهی داکر در صنعت نرمافزار است.