شده بخواین خیلی سریع یه محیط توسعه نرم افزار بوجود بیارید که توی اون محیط تمامی نیاز های شما اعم از یک سیستم عامل خاص ( debian , redhat, centos ,...)و ابزار های برنامه نویسی و توسعه (nodejs, redis, mysql , php, ....) بدون تداخل با هم کار کنن !!! .... <مگه میشه ... مگه داریم....بدون تداخل!!...برو بابا...:)> ... بله میشه....اما چطور؟
برای پاسخ به این سوال باید برگردیم یکم عقبتر ...
قبلنا (و شایدم الان) برای اینکه میخواستیم یه برنامه ای رو تست کنیم یا با یک زبان جدید (زبان و تمام وابستگی ها و متعلقاتش) کار کنیم باید تمام ابزار های ضروری اون زبان (یا برنامه تستمون) رو روی سیستم نصب میکردیم ...خب تا اینجا مشکلی نیست .... ولی تصور کنید تعداد زبان هایی که مخواستیم رشون کارکنیم زیاد باشن (php , node, python, ruby, redis, mysql ,...) . ... این موضوع زمانی اهمیت پیدا میکنه که شما بخواین موقت با یه زبان یا هرچیز دیگه ای کار کنید و بعدا خیلی خوش مزه پاکش کنید...!! مثلا من تازه گیا با redis آشنا شدم و مخوام تستش کنم و خلاصه در حین تست هر بلایی که عشقم کشید سرش بیارم و بعد به علت مرض ناشناخته ای بزنم پاکش کنم (خودش و تمام آثارش).... حالا تصور کنید اینکار رو با ابزار های دیگه هم بکنم (البته نیتم ابزار آزاری نیستا) اونوقت خودتون مفهمین که چه کار پر درسریه (نصب / حذف کامل کامل / شایدم بعدا دوباره بخوای نصب کنی / و دوباره حذف کامل / والا آخر...) و البته بس خطرناک ( ممکنه آثارش کامل پاک نشه و باعث تداخل در آینده بشه و ...) . دراین صورت هیچ آدم سالم العقلی نمیاد تمام این چیزا رو نصب کنه روی فقط یک سیستم (پدرش در میاد)
برای حل این مشکل میشه یه سیستم عامل جدید با مجازی سازها بسازید و هر کاری که میخواین بکنید(تست برنامه یا زبان و یا ابزار و ...) رو روی اون انجام بدید ....
خب اینکار مشکل رو حل میکنه ولی عیب های (البته ذاتاً عیب نیست) بزرگی هم داره :
البته من همینجا متذکر میشم که من هدف اصلی ساخته شدن داکر یا چیزهایی ازین قبیل رو نمیدونم ولی ظاهراً این چیزایی که دربالا گفتم اگر تنها دلیل ها نباشن حداقل جزئی از دلایل بوجود آمدن داکر میتونن باشن ... گفتم بگم که عزیزان حرفه ای توی این صنعت خرده بگیرن با ما... ;-)
خب تا اینجا یه پیش زمینه ای از مشکلی که قبلا بوده دارید و خیلی راحتر میتونید بفهمید که داکر قرار چه مشکلاتی رو برطرف کنه(و البته امکاناتی رو هم فراهم میکنه که قبلا درحالت عادی غیرممکن یا سخت بود) .... پس میرم جلو تر ....
قبل از این که شروع کنیم باید بگم که داکر ذاتا روی لینوکس اجرا میشه (البته نسخه های ویندوز و مک هم داره که ساز کار خودشو داره ....) و اگر ما در ادامه بیشتر درمورد لینوکس صحبت کردیم تعجب نکنید...
داکر در واقع یه چیزی شبیه همون مجازی سازه منتها با یه تفاوت :
برای نصب یک سیستم عامل (مثل debian) روی مجازی ساز باید نسخه کامل اون سیستم عامل رو داشته باشید ... که منظور از نسخه کامل ینی هسته سیستم عامل + ابزارهای خاص اون سیستم عامل...
قبل از ادامه باید دو تعریف رو خدمتون عرض کنم :
۱- هسته سیستم عامل : اسم دیگش kernel هست که توی سیستم عامل های لینوکسی این هسته بین تمام توزیع ها مشترکه و یکیه...
۲- ابزار های خاص یک سیستم عامل : خب میدونید دیگه هسته سیستم عامل های لینوکسی (debian, fedora, redhat ,....) همش یکیه پس تفاوت این توزیع ها در ابزارهای سیستمی و کاربردی که هرتوزیعی برای خودش داره مثلا در debian ما ابزار apt رو داریم و در fedora ابزار yum رو داریم و همچنین در kali ابزار های هک و امنیت رو داریم (البته قطعا مثال من خیلی مبتدیانست ولی خب درکل هر توزیعی برای یه هدفی تولید شده و ابزارهای خاص خودشو داره ....)...
خب در ادامه داشتیم میگفتیم که مجازی سازها نسخه کامل سیستم عامل (فرضاً هر توضیعی از لینوکس ) رو احتیاج دارن تا بتونن نصبش کنن و بهتون تحویل بدن که مثلا اگر بخوایم ubuntu رو مثال بزنیم ینی باید بیش از دوگیگ (دقیق نمیدونم) رو دانلود کنید بعد بدینش به مجازی ساز.....
این درحالیه که همون سیستم عامل ubuntu با حجم کمتر از ۱۰۰ مگابایت رو میتونید توی داکر بریزید ولی این با اون قبلی یه تفاوتایی داره :
این سیستم عامل هایی که توی داکر ریخته میشه فقط شامل ابزار های ضروری و سیستمی خاص اون سیستم عامله و هسته اصلی به همراه ابزار های گرافیکی و غیر ضروری درون اون ها حذف شدن...!!! در واقع اون سیستم عاملی که در داکر نصب میشه (و هستَش همراش نیست) از هسته سیستم عاملی که داکر روش نصب شده استفاده میکنه که قبل تر گفتیم هسته های تمام توزیع ها یکین و خیلی راحت داکر کاری میکنه که سیستم عامل (ناقص) ما احساس کمبود نکنه و به سرعت اجرا بشه و آماده است که شما روش هرچی میخواین بریزید و برنامه ها و ابزار های زیادی روش تست و اجرا کنید و حالشو ببرید البته از طریق ترمینال (همون خط فرمان توی ویندوز)....
چون فرایند نصب و اجرای سیستم عامل ها در داکر خیلی سریع و بی درد سر شما میتونید در کمتر از ۵ دقیقه یه محیط توسعه شامل سیستم عامل و ابزار های مورد نیاز تون رو بیارید بالا و گاهاً حتی کمتر از یک دقیقه و حتی در حد چند ثانیه!!!!!......البته باید قبلش آموزش هاشو دیده باشین..
البته تمام سیستم عامل های کوچیک شده رو توی مخزن داکر میتونید پیدا کنید ....
من سعی کردم زیاد تخصصی نکنم موضوع رو وگرنه باید مفاهیمی مثل container , images و .... رو میگفتم که دیگه اگه خدا یاری کرد در قسمت های بعدی به آموزش تخصصی می پردازیم .... ولی اگر تا همینجا هم علاقه مند شدید به این ابزار و خواستید بییشتر بدونید حتما یه سری به این صفحه بزنید و اگرهم هنوز مطلب براتون هضم نشده به این صفحه برید...
بهترین سایتی که تخصصی رو این موضوع کار میکنه : elastico.io : فقط مطالبش رو از قدیمی تر بخونید بیاد به جدید تر چون جدید ها تخصصین و قدیمی ها مبتدیانه تر هستند....
ممنون که خوندید و امیدوارم لذت برده باشین .... التماس نظر.....