داکر برای توسعه‌دهندگان؛ واقعا به چه دردی میخوره؟!

به عنوان توسعه‌دهنده، شاید دوست نداشته باشید بدونید چطوری MongoDB نصب و کانفیگ میشه، اما برای توسعه نرم‌افزارتون بهش نیاز دارید؛ یا میدونید چجوری نصب میشه اما الان روی سیستمتون نصب نیست و حوصله نصبشم ندارید؛ یا حتی شاید نصبم هست اما برای تست، نسخه خاصی (مثلا نسخه قدیمی‌تر) رو لازم دارید... اینجاس که داکر ما رو نجات میده :)داکر این امکان رو میده تا عزیزانی، نرم‌افزارها و ابزارهایی که خیلی پرکاربرد هستن رو، نصب و کانفیگ کنن و تنها کاری که شما باید انجام بدید دانلود و بلافاصله بعدش اجرای اونهاس.اجازه بدید از اینکه چجوری اون عزیزان کارشون رو انجام میدن عبور کنیم و مستقیم بریم ببینیم زحمات اونها چطور به کار ما میاد؛ همون مثال MongoDB خودمون رو در نظر بگیرید؛ با این دستور (با فرض اینکه داکر روی سیستمتون نصبه):docker run -p 27017:27017 mongoداکر یه سری فایل رو (فقط بار اول) دانلود میکنه و در عرض چند ثانیه میتونید از MongoDB روی پورت ۲۷۰۱۷ استفاده کنید.توی سایت dockerhub میتونید تقریبا هر آنچه که نیاز دارید رو پیدا کنید؛ مثل Nginx, Redis, Postgres, MySQL, Memcached و ...البته سایت dockerhub متاسفانه ما رو تحریم کرده که میتونید از شکن یا راه‌های دیگه‌ای که خودتون میدونید استفاده کنید.کاربرد داکر به اینجا ختم نمیشه؛ ممکنه بخواید از نرم‌افزاری (بهتره بگم ابزاری) استفاده کنید که از سیستم‌عامل شما پشتیبانی نمیکنه؛ برای داکر سیستم‌عامل شما (اونقد که به نظر میاد) مهم نیست! اجراشون میکنه :)داکر همچنین برای دیپلوی (deploy) اپلیکیشن‌ها خصوصاً توی دنیای مایکروسرویس کاربرد داره؛ که البته از بحث تا حدودی خارجه و منم تخصصی ندارم.اما حالا یکم بپردازیم به خود داکر:داکر چیست؟!مقایسه ماشین مجازی و کانتینرتعریف‌های خیلی کامل‌تر و سنگین‌تری برای داکر وجود داره اما چیزی که خودم فهمیدم و احساس میکنم درکش ساده‌تر باشه رو خدمتتون میگم. فکر میکنم قبل از تعریف داکر، خوب باشه اول ببینیم داستان کانتینرها چیه.در زمان‌های نه چندان قدیم وقتی میخواستن چندتا نرم‌افزار رو، روی یک سخت‌افزار واحد اجرا کنن، به طوری که مزاحمتی برای همدیگه نداشته باشن - در واقع رم، سی‌پی‌یو و ... اختصاصی برای خودشون داشته باشن - مجبور بودن از ماشین‌های مجازی استفاده کنن.ماشین‌های مجازی خیلی خوب بودن و هستن اما هر کدومشون به یه سیستم‌عامل نیاز دارن و هر سیستم‌عامل مقدار نسبتاً زیادی منابع (خصوصاً هارد و رم) استفاده میکنه.برای رفع این مشکل‌، کانتینرها اومدن به میدون؛ اونها هم مثل ماشین‌های مجازی منابع اختصاصی خودشون رو دارن اما دیگه نیازی به سیستم‌عامل جداگانه ندارن؛ یعنی نیازشون به سیستم‌عامل، تا جای ممکن از طریق خود سیستم‌عامل میزبان، برطرف میشه. عملاً علاوه بر اینکه سخت‌افزار به اشتراک گذاشته میشه، سیستم‌عاملِ روی اون هم به اشتراک گذاشته میشه.حالا با این اوصاف، داکر رو (خیلی خیلی ساده) شاید بشه اینجوری تعریف کرد:داکر،‌ ابزار ایجاد و مدیریت کانتینرهاست؛ شبیه VMware و VirtualBox اما توی دنیای کانتینرها.البته این تعریف کاملا درستی از داکر نیست؛ چون داکر خودش به چند بخش تقسیم میشه و تعریف بالا، تعریف یکی از اون بخش‌هاست؛ ولی به چیزی که داکر در نگاه اول به نظر میاد نزدیک‌تره.همیشه برای من، مواجهه با یه ابزار جدید خیلی خوش‌آیند نبوده؛ چون بیشتر از اینکه توی معرفی خودشون، کاربردشون رو معرفی کنن، خودِ خودشون رو معرفی میکنن. انگیزه من هم برای نوشتن این مطلب این بود که قبل از اینکه با خودِ داکر آشنا بشید، اول ببینید به کارتون میاد یا نه که امیدوارم این کار رو تونسته باشم انجام بدم.ان‌شاءالله در آینده بتونم جزئیات بیشتری از روش نصب داکر و استفاده از اون رو خدمتتون بگم.