یکی از بحث های ترند ( Trend ) این روزهای حوزه فناوری اطلاعات ،  به ویژه دوستان برنامه نویس و دواپس کار ، داکر هست که احتمالا شما هم با شنیدن اسمش کمی براتون موضوع عجیب و غریب به نظر میرسه !  توی این مقاله من میخام به ساده ترین شکل ممکن " داکر چیست " رو برای شما معنی کنم و شما آخرش اینقدر عمیق معنی و مفهوم و کاربرد این سرویس رو یاد می گیرید که خندتون میگیره از ساده بودنش ! بگذریم ، برای اینکه در کنید داکر چی هست و چه کاری انجام می ده و اجزای سازندش چی هستند و وظیفه هر کدومش چی هست .

من نمیام براتون واژه های قلمبه سلمبه اولش ردیف کنم ، خیلی ساده اول از تاریخچه مشکلاتی که وجود داشت و با اومدن سرویسی به نام داکر حل شد و در ادامه چرا اینقدر محبوب شد صحبت می کنیم. پس تا آخر این مقاله با من همراه باشید و با هم کیف کنیم .

داکر ( Docker ) چیست و چگونه کار می کند

تاریخچه داکر و دلیل به وجود اومدنش !

یکی بود ، یکی نبود زیر گنبد کبود یه سری برنامه نویس بودن که کدنویسی می کردن ، اینها وقتی کد نویسیشون تموم میشد ، روی سیستم عامل خودشون اجراش می کردن ، تستش می کردن ، باگ هاش رو در میاوردن و عملیاتی می کردنش و نرم افزار آماده میشد که برسه دست مشتری و روی سرور اصلی نصب بشه ، تا اینجای کار که اوکی هستی؟  برنامه نویس محترم همه چیز رو چک می کرد و خیالش راحت بود که هیچ مشکلی در تحویل پروژه وجود نداره ! خوب بریم سراغ تحویل پروژه !

روز تحویل پروژه می رسید ، نرم افزار رو روی سرور اصلی میاوردن بالا ! ای دل غافل ! برنامه کار نمی کنه ! چی شده حالا؟ متوجه میشدن که یه سری فایل DLL از نرم افزارها توی سرور نصب نشده ! خوب بریم اونها رو نصب کنیم ! باز اجرا میشد ! کار نمی کرد ! متوجه میشدن که رزولوشن تصویری که برای اجرای نرم افزار در نظر گرفته شده بود روی سرور متناسب نیست ! درستش می کردن ! دوباره تست می کردن میدیدن کار نمی کنه ! چی شده؟ یه فایل آپدیت ویندوز یا لینوکس روی سرور نصب نیست و خلاصه اینکه " برنامه ای که سالم روی سیستم برنامه نویس کار می کرد ، به دلیل وجود وابستگی های سیستم عاملی ، کتابخانه های نرم افزاری و خیلی از موارد دیگه ، روی سرور یا هر جای دیگه به درستی کار نمی کرد. "

خوب چیکارش کنیم؟ از اون بدتر اینکه شاید من چند تا مشتری دیگه هم داشته باشم که اونها هر کدوم روی سرورهاشون ممکنه مشکلات مختلفی داشته باشن !! راهکار چی هست؟ یه دفعه یه نفر اومد گفت بیاین یه کاری کنیم ، بیاین یه جوری برنامه رو بنویسیم که به سیستم عامل میزبان وابستگی مستقیم نداشته باشه و همه پیشنیازها و DLL ها و تنظیمات و فایل های نرم افزار هم داخل خود پکیج نرم افزار قرار بگیره و نیازی نباشه هر بار نصبش کنیم ، فقط کل پکیج رو جابجا می کنیم . ! اینجا بود که مفهومی به وجود اومد به نام داکر یا Docker که این مشکل رو برامون حل می کرد.  

به زبان ساده تر داکر یک تفکیک کننده سورس و فایل های نرم افزار از سیستم عامل به حساب میومد و وابستگی شما از مشکلات مربوط به سیستم عامل رو بر می داشت. باحالش می دونی چیه !! اینکه یه جورایی انگار برنامه هات دیگه پرتابل و قابل حمل هستن و حتی دیگه نصب هم لازم ندارن !

داکر کانتینر ( Docker Container ) چیست؟

کانتینر چی هست؟ Containerization به زبان ساده

خوب تا اینجای کار متوجه شدید که داکر مشکل ما رو حل می کنه ! اونم با ساختن یک پکیج کامل بدون وابستگی به سیستم عامل که هر جا دوست داشتیم ببریمش و دغدغه هماهنگی و مشکلات وابستگی به سیستم عامل رو نداشته باشیم. خوب این پکیج رو اسمش رو میزایم کانتینر ( Container ) حالا چرا اسمش رو این گذاشتیم؟ Contain به معنی شامل شدن هست به فارسی یعنی اپلیکیشینی که داخلش هست شامل همه چیزهایی میشه که بدون نیاز به وابستگی های سیستم عامل کار می کنه و براحتی قابل جابجایی هست حله؟ حالا چرا اسم کانتینر میاد یاد تریلی و کشتی میوفتید؟ نیوفتادید؟

در واقع اگه بخایم درست صحبت کنیم دقیقا همون کانتینری که برای تریلی و کشتی ، بار حمل می کنه ، مفهومش در داکر وجود داره ، شما داخل یک کانتینر بدون وابستگی به چیزی که داره حملش می کنه محمولتون رو جابجا می کنید ! یعنی مهم نیست برای کشتی که چی داخل کانتینرها هست ! حملش می کنه ! مهم نیست برای تریلی که چی داخل کانتینتر بارش هست ! حملش می کنه ! فقط مثال کشتی رو بهتر درک می کنید چون می تونیم صدها کانتینتر داخل کشتی داشته باشیم .

حالا شما هم فرض کن روی یک کشتی ( که ما اینجا بهش میگیم سیستم عامل ) می تونید صدها کانتینر ( که همون پکیج های نرم افزاری هستند ) رو جابجا و مدیریت کنیم که برای بحث نرم افزارها میشه اجرا کردن و نظم دهی و روشن و خاموش کردن و مدیریت منابع  ، خوب الان دیگه پس متوجه باید شده باشید که اون کانتینرهای نرم افزاری ( پکیج ) توسط یک نرم افزاری به نام داکر ( Docker ) روی سیستم عامل ( کشتی ) ایجاد ، مدیریت ، اجرا و نگهداری میشن ، در عین حال که داخلشون مجزا از سیستم عامل هست ، از کرنل یا هسته سیستم عامل برای اجرا شدن استفاده می کنن . امیدوارم که منظورم رو گرفته باشید.

داکر چیست؟ بریم سراغ اصل داستان

این همه توضیح دادیم تا برسیم به همین یه جمله که بالاخره " داکر چیست " و رسیدیم ! بازم ولی صبر کنید که یه توضیح بدم ، به نظرتون اصلا چرا اسمش رو گذاشتن داکر ( Docker ) ؟ این سوال رو جواب بدیم خیلی از مسائل مشخص میشه ، ترجمه کلمه Docker به فارسی میشه " بارانداز" یا " لنگرگاه" برای کشتی ها ! که به نظر بی ربط میاد ولی چرا این اسم رو روش گذاشتن؟

خوب گفتیم که نرم افزارها در قالب " Container " ها کار می کنن دیگه درسته؟ و گفتیم که در دنیای واقعی Container ها روی کشتی ها جابجا میشن دیگه درسته؟ حالا اگه باز همینجوری بخایم مثال بزنیم و فرض کنیم که کشتی که داره Container ها رو جابجا می کنه اسمش باشه " سیستم عامل " و اون " کانتینرها" که جابجا میشن هم اسمش باشه پکیج های نرم افزاری ، داکر که میشه بارانداز اون نرم افزاری هست که وظیفه مدیریت کردن این Container ها رو داره ، گرفتید؟

یعنی این Docker هست که بسته های نرم افزاری ایزوله رو ایجاد می کنه ، اونها رو جابجا می کنه ، اونها رو خاموش و روشن می کنه ، اونها رو نگهداری می کنه ، منابعی که استفاده می کنن رو مدیریت می کنه و از همه مهمتر واسط بین سیستم عامل و پکیج های نرم افزاری میشه که بتونن بدون وابستگی به سیستم عامل اصلی از لحاظ نرم افزاری ، فقط کارشون رو انجام بدن . .. جذاب شد نه ؟ پس بیاین اینجوری " داکر چیست" رو تعریف کنیم ، مخصوصا برای یه نفر دیگه که میخاد بدونه جریان چی هست ، تعریف فنی Docker این هست :

"  داکر یک نرم افزار هست ، وظیفه این نرم افزار مدیریت کردن پکیج های نرم افزاری هستند که در قالب Container ها روی سیستم عامل قرار می گیرند ، داکر یک نرم افزار اوپن سورس هست ، هم می تونه روی لینوکس اجرا بشه و هم روی ویندوز !  داکر به شما به عنوان یک برنامه نویس اجازه میده خیلی سریع ، با دقت ، بدون چالش های نرم افزاری عجیب و غریب ناشی از عدم هماهنگی با سیستم عامل ! نرم افزارهای پرتابل و قابل حمل بسازید ! ... "  جا افتاد؟

مجازی سازی لایه سیستم عامل چیست

OS Level Virtualization چیست؟ چه ارتباطی به داکر داره؟

یه دفعه از داکر رفتیم توی مجازی سازی ! چه ربطی به هم دارن؟ عجله نکنید ... ببینید داکر یه جورایی داره ماشین مجازی یا Virtual Machine در سیستم عامل ها ایجاد می کنه ، اما به جای اینکه یه ماشین مجازی کامل و صفر تا صد ایجاد کنه ، میاد فقط محتویات نرم افزارهای داخل ماشین رو میسازه و از کرنل سیستم عامل میزبان استفاده می کنه ، اینجوری هم سیستم عامل سبک تر میشه ، هم کار کردن باهاش راحت تر میشه ، به این نوع مجازی سازی که ماشین های مجازی خودشون از خودشون سیستم عامل مستقل ندارن و وابسته به سیستم عامل میزبان هستند در اصطلاح OS Level Virtualization گفته میشه . داکر هم از همین نوع مجازی سازی محسوب میشه ، پس همینجا باید یکی از محدودیت های داکر رو درک کرده باشید 

شما نمی تونید Container هایی بسازید که متفاوت از سیستم عامل میزبان باشند چون از کرنل سیستم عامل اصلی داره استفاده می کنه ، این یعنی روی لینوکس فقط Container  های لینوکسی و روی ویندوز فقط Container های ویندوزی قابل اجرا هستند. روی ویندوز میشه Container لینوکسی ساخت؟ چطوری؟

بر اساس تعریفی که از داکر کردیم ! روی ویندوز نمیشه Container های لینوکسی ساخت اما مایکروسافت اومده یه ترفند زده و یک ماشین مجازی لینوکسی توی خود ویندوز قرار داده که وقتی میخاد Container های لینوکسی اجرا کنه از اون استفاده می کنه و به خاطر همین شما می تونید یک Container که مختص سیستم عامل لینوکس اوبونتو هست رو روی یک ماشین ویندوزی اجرا کنید ، برای اینکه در اصل ماجرا خللی ایجاد نشه .

 

اصطلاحاتی که در بحث داکر میشنوید  ( معماری داکر )

خوب شما دیگه تا اینجا می دونید داکر چی هست و چکار برای ما انجام میده اما در بحث  داکر ما با کلی واژه به نظر عجیب و غریب مواجه میشیم که من سعی می کنم خیلی ساده و خودمونی براتون توضیح بدم که چی هست ، دقت کنید اگر قرار هست داکر رو خوب یاد بگیرید با این مقاله یاد نمی گیرید و می تونید به دوره آموزشی داکر سایت توسینسو مراجعه کنید . خوب بریم سراغ این اصطلاحات و معماری که در داکر وجود داره :

داکر کانتینر چیست

1. Docker Container چیست؟

این قسمت از داکر دقیقا مثل همون کانتینری هست که تو کشتی براتون مثال زدم . مهم نیست توی کانتینر شما چی باشه ، کشتی فقط بار رو حمل می کنه و توی بحث نرم افزار هم همینه ، برنامه رو توی یه جعبه میزاری و هر جا ببریش بدون وابستگی به سیستم عامل اجراش می کنی ، اینو بهش میگن Docker Container متوجه شدی؟  حالا برای تعریفش فنیش هم اینجوری در نظر بگیر که Docker Container یک محیط ایزوله و مستقل برای اجرا کردن نرم افزارهاست که روی کرنل یا هسته سیستم عامل میزبان ساخته میشه ، تمام کتابخانه های برنامه نویسی ، تنظیمات و فایل هایی که یه نرم افزار نیاز داره رو داخلش قرار میدیم .

کانتینرها تا حدی شبیه به ماشین های مجازی عمل می کنن اما از منابع سیستم بصورت اشتراکی استفاده می کنن و به خاطر همین هم خیلی خیلی سبک تر از ماشین های مجازی هستن.

داکر ایمیج چیست

2. Docker Image چیست؟

یه جایی خوندم اومده بود داکر ایمیج رو " تصویر داکر" ترجمه کرده بود ! یعنی اینقدر خندیدم که نگو ! بگذریم ! این Image هیچ ربطی به اون تصویر نداره ، تو بحث های شبکه و فناوری اطلاعات هر موقع بحث از ایمیج شد یعنی یه چیز آماده شده برای انجام یه کاری ! مثلا یه سیستم عامل آماده که براحتی میشه بارها از روش نصب کرد ! یا بکاپ گرفت حله؟حالا بریم سراغ داکر ، توی داکر وقتی صحبت از ایمیج میشه منظورمون قالب کانتینرهای کشتی هست حله؟  بزار منطقی تر صحبت کنم ، شما مگه می تونی روی یک کشتی سایز کانتینرها رو تغییر بدی و سایزهای عجیب و غریب بزاری ؟ قطعا نه چون Image یا قالب اون کانتینر از قبل مشخص هست و باید مشابه همون کانتینر رو بارها بسازن و اندازه ها دقیق باشه تا توی کشتی نظم ایجاد بشه. برای داکر هم همینه ، شما توی یک ایمیج میاین دستورالعمل ها و نقشه های ساخت Container ها رو می نویسید و موقع ایجاد دیگه درگیر قالب ساختشون نمیشید ، متوجه شدید؟ نشدید؟ خوب پس بزار تعریف فنی Docker Image رو بگم براتون .

 Docker Image یک الگو یا در اصطلاح فنی یک Snapshot فقط خواندنی هست ( نمیشه تغییرش داد ) از نرم افزاره که داخلش تنظیمات سیستم عامل و فایل سیستم های مورد نیاز برای اجرای اپلیکیشن ها قرار میگیره ، کانتینرها نمونه های اجرایی از همین ایمیج ها هستن ، ایمیج ها قابلیت چند بار استفاده شدن دارن . بازم ساده تر بخام بگم ! از روی این قالب Container میسازیم حله؟

داکر کامپوز ( Docker Compose ) چیست

3. Docker Compose چیست؟

بیاین این کلمه رو ترجمه نکنیم خوبه؟ فقط درکش کنیم چون ممکنه کمی معنیش مبهم به نظر برسه ، اینجوری در نظر بگیرید که بعضی اوقات توی کشتی های باری ما کانتینرهای باری داریم که بارشون برای اینکه درست کار کنه ( یکپارچه بشه ) باید با همدیگه در ارتباط باشن ، مثلا شما توی یک کانتینر "آرد گندم" دارید و توی یک کانتینر دیگه " آب " دارید و توی یک کانتینر دیگه " نمک " دارید و توی یک کانتینر دیگه " آتیش " و طبیعتا اگر بخایم خروجیمون "نان" باشه باید اینها بتونن با هم ارتباط داشته باشن درسته؟ این  ارتباط وظیفه Docker Compose هست. بریم فنی رو بررسی کنیم.  بعضی از اپلیکیشن هایی که در قالب Docker Container کار می کنن برای اینکه بتونن درست فعالیت کنن به ارتباط با یک Docker Container دیگه نیاز دارن ، به نوعی وابستگی به هم دارند . مثلا شما یک اپلیکیشن اتوماسیون اداری دارید ، روی یکی از Docker Container ها خود اپلیکیشن و فایل هاش رو قرار دادید و توی یک Docker Container دیگه اومدید دیتابیس رو قرار دادید و برای اینکه اینها بتونن درست کار کنن نیاز دارن که با هم ارتباط داشته باشن و به نوعی وابسته هم هستن. اینجاست که Docker Compose وارد عمل میشه.

تعریف فنی Docker Compose این هست که در واقع ابزاری هست که به شما اجازه میده چند کانتینر داکر رو که به هم وابستگی دارن ( معمولا با یک فایل تنظیمات که بهش میگن YAML ) ارتباط بدید ، اجرا کنید و مدیریت کنید. در اصطلاح به Docker Compose میگن Multi-Container Application Maker یا ابزار سازنده اپلیکیشن های چند کانتینری ...

داکر دیمن چیست

4. Docker Daemon چیست؟

 یکی از مفاهیمی که در داکر ممکنه خیلی ابهام ایجاد کنه همین مفهوم Docker Daemon و Docker Service هست. واقعیت اینه که قدیما واقعا کلمه Daemon ( که معنیش میشه شیطانی و پلید و هیچ ربطی به آی تی نداره ) میشد همون سرویس ! اما در داکر یه مقدار متفاوت هست . پس کمی بیشتر دقت کنید که قاطی نکنید این دو تا رو با هم .با توجه به مثال کشتی که برای داکر زدیم ، Docker Daemon اون ناخدای کشتی هست که دستورات رو اجرا می کنه ، اما تو هستی که بهش دستور میدی. به ناخدا میگی این بار رو بذار فلان جا ، اون بار رو اجرا کن ، اون یکی بار رو مدیریت کن ، موتور کشتی رو روشن کن ، به کدوم سمت حرکت کن ، نقشه راه چی هست و ... اوکی ؟ ناخدای کشتی فقط دستور رو میگیره و اجرا می کنه ... همین ...

حالا تعریف فنی Docker Daemon چی میشه؟ اون پردازش اصلی هست که روی سیستم اجرا میشه و همه کارهای اجرایی داکر رو انجام میده ، مثلا ساخت ، اجرا ، نگهداری ، مانیتورینگ و مدیریت کانتینرهای داکر بر عهده Docker Daemon هست. حتی ارتباطات بین کلاینت ها و Docker Engine که جلوتر توضیح میدیم هم بر عهده Docker Daemon هست. راجع به سرویس عجله نکنید جلوتر توضیح میدم چی هست دقیقا ...

داکر سرویس ( Docker Services ) چیست

5. Docker Services چیست؟

 خب این همه راجع به کشتی و کشتیرانی با داکر صحبت کردیم. برسیم سراغ ماموریت ناوگان کشتیرانی ! مثلا توی ماموریت های کشتی های مختلف یک ناوگان وظیفش اینه که همیشه باید گندم حمل کنه و به مقصد برسونه ، چند تا کانتینر رو هم پر گندم می کنیم که فقط همین ماموریت به درستی انجام بشه و این سرویس هیچوقت نباید قطع بشه . و میگی همیشه باید سه تا کشتی پر از گندم آماده حرکت باشن ، اگه یکی از کشتی های حامل گندم به مشکل خورد سریع باید یکی دیگه جایگزینش بشه ، این میشه ماموریت یا سرویس ناوگان ما اوکی؟ بریم سراغ تعریف فنی:

Docker Service کارش این هست که همیشه به داکر بگه که از فلان برنامه ( ایمیج ) همیشه باید این تعداد Container روشن باشن ، مثلا میگی ما سه تا Docker Container داریم که روشون نرم افزار NginX هست ، همیشه باید این سه تا فعال باشه ، اگه یکیشون خراب یا خاموش شد ، داکر خودش یه Container جدید بسازه تا دوباره تعدادشون به عدد 3 برسه ، متوجه شدی؟ در واقع Docker Service یه جور مدیر ناظره که حواسش هست همیشه همون تعداد Container هایی که گفتی ، روشن و سالم باشن . سرویس در داکر وظیفش اینه که بگه " این تعداد کانتینر همیشه باید فعال باشن "

داکر سوارم ( Docker Swarm ) چیست

6. Docker Swarm چیست؟

کلمه Swarm معنیش میشه " ازدحام یا گروه " و در داکر و مثال کشتیرانی شما فرض کنید چند تا کشتی داشته باشید ، یه نفر باید مسئول هماهنگی ناوگان حمل و نقل باشه که مثلا تو وقتی دستور میدی بار رو برسونید ، اون شخص مدیریت کنه که روی کدوم کشتی بارها قرار گیره . این وظیفه Docker Swarm هست. حالا بریم سراغ تعریف فنی ...

فرض کن چندین سرور ( Server ) داکر داری ، این Docker Swarm  هست که میاد میگه کدوم کانتینتر روی کدوم سرور اجرا بشه ، حتی ممکنه بیاد کانتینرها رو بین سرورهای مختلف پخش کنه ( Load Balancing ) انجام بده ، یا مطمئن بشه که کانتینرهای نرم افزاری همیشه در حال اجرا هستن ( Desired State ) و حالشون خوبه و یا اینکه اگه یکی از سرورها یا کانتینرها از کار افتاد ، جایگزینش کنه ( Fault Tolerance ) و فرآیند خطاپذیری رو مدیریت کنه ، پس این شد مهمترین وظایف و تعریف Docker Swarm که مهمه بشناسیدش.

داکر هاب چیست

7. Docker Hub  چیست؟

Docker Hub رو اگه بخایم با ادامه مثالهای بندر و کشتیرانی جلو ببریم ، میشه به عنوان یک بندر بین المللی در نظر گرفت که همه دنیا بارهاشون رو اونجا میزارن ، تو هم میری هر چی خواستی بر میداری برای خودت ! حالا بزار تعریف فنیش رو بگم .

 Docker Hub یک سرویس Cloud یا همون ابری عمومی هست که داخلش کلی ایمیج داکر وجود داره که هر کسی می تونه ایمیج هاش رو اونجا آپلود کنه تا دیگران استفاده کنن یا خودش از ایمیج های ساخته شده توسط دیگران استفاده کنه ، یه جور بازار ( خرید و فروشی نیست معمولا ) پر از انواع اپلیکیشن های آماده داخل Container هست .

داکر کلاینت چیست

8. Docker Client چیست؟

 با ناخدای کشتی چجوری ارتباط میگیری؟ مثلا یک بیسیم داری که باهاش دستورات رو به ناخدا می رسونی درسته؟ خودت قرار نیست هر باری که قرار هست دستور بدی ناخدا چیکار کنه پاشی تا خود کشتی بری نه؟ یه جور پیامرسان نیاز داری که میشه Docker Client . حالا برای تعریف فنیش هم می تونیم بگیم که

Docker Client  یک رابط خط فرمانی ( CLI ( Command Line) ) یا رابط گرافیکی ( GUI ) هست که شما با داکر ارتباط می گیرید و بهش می گید چه کارهایی انجام بده ، شما با استفاده از Docker Client به Docker Daemon متصل میشید و بهش دستور میدید.

داکر رجیستری چیست

9. Docker Registry چیست؟

 رجیستری داکر یا Docker Registry یه انبار خصوصی یا بهتر بگیم اختصاصی هست برای ذخیره کردن کانتینرهای شما ، مثل یه بندر کوچیک میمونه که عمومی نیست . از لحاظ فنی شما می تونید ایمیج های داکری که ساختید رو یه جا خصوصی برای خودتون نگهداری کنید که بهش میگیم Docker Registry حالا اگه این انبار عمومی و یک بندر بزرگ بود بهش می گفتیم Docker Hub ، متوجه شدی؟

تعریف فنی Docker Registry اینه که یه سرویس ذخیره سازی ایمیج داکر هست که شرکت یا سازمان شما معمولا بصورت خصوصی راه اندازی می کنید تا زمانیکه شما از طریق Docker Client میخاین دستوراتی مثل Push و Pull  ( ساده بگم بگیر و بیار ) مستقیما با Docker Registry دیگه ارتباط میگیره .

داکر دسکتاپ چیست

10. Docker Desktop چیست؟

 اگه بخای بندر رو با همه کشتی ها و کانتینرهاش مدیریت کنی ، قطعا نمی تونی هر دقیقه پاشی دور تا دور بندر و بچرخی که بتونی متوجه مشکلات بشی و حلشون کنی نه؟ اینجاست که داکر دسکتاپ کمکت میکنه ، این ابزار یه جورایی ماکت کوچیک شده همه بندر و کانتینرهاش و کشتی هست که روی میزت قرار گرفته و همه چیز در نسخه کوچیک شده روی میزت هست و براحتی می تونید مدیریتشون کنی ، حله ؟

حالا تعریف فنی Docker Desktop اینه که نرم افزاری هست که روی سیستم عامل های ویندوز و مک نصب میشه ( لینوکس رو هنوز استفاده نکردم ) و همه ابزارهای فنی مثل Docker Engine و CLI و Docker Compose رو بصورت یکجا و گرافیکی بهت ارائه میده ، این ابزار مخصوص برنامه نویس هاست که روی کامپیوتر شخصیشون نصب میشه .

داکر انجین چیست

11. Docker Engine چیست؟

خوب رسیدیم به موتور محرک ماجرا ! Docker Engine موتور کشتی ماست . یا بهتر بگیم موتور اصلی کشتی ماست . اگه موتور نباشه ، کشتی حرکت نمی کنه ، مجموعه موتور کشتی فقط یک قسمت از کشتی نیست و ترکیبی از ناخدای کشتی ( Daemon ) ، بیسیم کشتی ( API ها یا رابط های برنامه نویسی ) و Docker Client هست .

این Docker Engine هست که کانتینرها رو مدیریت می کنه ، رابط برنامه نویسی برای ارتباطات خارجی با اپلیکیشن های داخل کانتینرها ( API ) ارائه میده و ابزار ارتباط و تعامل ( Docker Client ) رو هم داخلش داره ، برای ما قابلیت ساخت ، اجرا و مدیریت کانتینرها رو فراهم می کنه.

نتیجه گیری و خلاصه ماجرا

دیگه الان شما کاملا داکر رو میشناسید. اگه بخایم با تمام توضیحاتی که گفتیم حالا داکر رو در یک پاراگراف خلاصه کنیم و برای یکی تعریف کنیم میشه گفت :

داکر رو یک کشتی باربری بزرگ تصور کن که کانتینرهای مختلف رو جابجا می کنه . توی دنیای نرم افزار ، کانتینر یعنی همون جعبه ای که برنامه و همه چیزهای لازم برای اجرا شدنش ( مثل کتابخونه ها و تنظیمات و فایل ها و ... ) توش گذاشته شده . با داکر دیگه لازم نیست نگران باشی روی هر سرور برنامت اجرا میشه یا نه ، چون مثل کانتینر روی کشتی ، هر جا ببریش همونطور و بدون دردسر کار می کنه ، داکر در و واقع کاری میکنه که برنامه هات ( پرتابل ) قابل حمل بشن و سریع و مستقل از سیستم عامل میزبان کار کنن .. هر ابهامی درباره این تعاریف داشتی توی نظرات بپرس تا برات قشنگ بازش کنم. نظر یادت نره ...