داکر یک پلتفرم open source است که اجرا، ساخت ، توزیع برنامه ها و همچنین امکان اجرا ی آن ها در محیط های مختلف در یک محیط ایزوله و بسته بندی شده ( container) انجام میدهد
Container :
مثل یک کانتینر میتونید در نظر بگیرید که برنامه ها را حمل و اجرا میکند. همیطور درون خودش همه وابستگی ها و ابزار های لازم برای اجرای برنامه رو داره . برای اجرای هر برنامه یه container داریم که اینا هیچ کدوم به هم ربطی نداره و با هم تداخل ندارن.
حالا اصلا چرا بیایم این روش دسته بندیو انجام بدیم .
فرض کنید تو یک تیم چند تا برنامه نویس هست که نسخه های مختلفی از ابزار و استفاده میکنه خب همین جوری که معلومه نسخه های مختلف امکانات مختلف داره که تو نسخه پایین تر نیس اینجوری، هر کی تو سیستمش یه چیزی داره و یه جایی به ناسازگاری میرسیم و دعوامون میشه حالا راه حل چیه؟(قرار بزاریم همه یه نسخه نصب کنیم ? )ما اینجا میایم برنامه هارو دسته بندی میکنیم و ویژگی هایی که میخوایم میریزیم تو اون دسته (container) بعد به برنامه نویسا میگیم بیاین این بسترو اجرا کنید تا هرکی نره واسه خودش یه چیز بریزه.
حالا یه مثال دیگه فرض کنید یه ابزاری داریم فقط رو لینوکس نصب میشه حالا ما ام میایم نصب میکنیم و برناممونو توسعه میدیم بعد مثلا رفتیم یه سرور خریدیم که سیستم عاملش ویندوزه (!) خب حالا چی میشه؟ error می خوره ولی تو سیستم خودتون به خوبی داره کار میکنه برای حل مشکل میایم داکرو نصب میکنیم برنامه رو بسته بنده میکنیم و اون بسته(container) رو می بریم رو سرور نصب میکنیم و اون سرور اصن دیگه کاری نداره تو اون container داره چی میشه
به دلایل دیگه از استفاده از داکر که میتونیم اشاره کنیم
مثلا شما هرچی نرم افزار و برنامه بیشتر داشته باشین مدیریتش دشوار تره . مثلا برنامه های java وابسته به java virtual machine هستند یا مثلا یه web application وابسته به database است (می تونه یه وایستگی این باشه مثلا) خب تو حالت عادی این برنامه ها با همه وابستگی هایی که باید نصب باشند سیستم شمارو مثل یه اتاق شلوغ و نامنظم میکنه
ولی با استفاده از داکر و بسته بندی کردن سیستم شما مرتب میمونه چرا چونکه یه برنامه با همه وابستگیاش میره تو یه بسته و با خارج از بستش با چیزی ارتباط نداره و وابستگی مشترک ایجاد نمیکنه و همه چی تمیز و مرتب میمونه احتمالا تو شکل بیشتر مشخص میشه
حالا یه خوبی دیگه داکر ایمنیه
مثلا یه مهاجم برنامه رو نوشته باشه یا مثلا برنامه bug های خیلی مخربی داشته باشه
حالا وقتی برنامتون توی یه container باشه مثل یه زندان میشه براش و دسترسیشو به بقیه برنامه های در حال اجرا و data ها و منابع حساس دیگه محدود میکنه و اینجوری امنیت بیشتر میشه
چرا داکر بهتر از ماشین مجازی ؟ تو ماشین مجازی چون به خاطر وجود یه سیستمعامل اضافه روی سیستمعامل میزبان، باعث میشه منابع زیادی هدر بره و حجم زیادی به پروژه اضافه کنه
ولی داکر این مشکل با اشتراکگذاری هسته سیستمعامل بین container ها، به آسانی حل میکنه.
این متن یه نگاه خیلی ساده به داکر بود و در کلام اخر ازش استفاده کنید :)
منبع من کتاب docker in action و سایت مونگارد بود