داکر چیه؟
داکر (Docker) یک پلتفرم نرمافزاری هست که با استفاده از زبان برنامه نویسی GO توسعه داده شده و عملیات ساخت، اجرا، مدیریت و توزیع اپلیکیشنها رو سادهتر میکنه. داکر این سادهسازی فرایند ایجاد که قراره اپلیکیشنها روی اون نصب و اجرا بشن رو به وسیله مجازیسازی سیستم عامل کامپیوتری انجام میده. در واقع، داکر مجموعهای از محصولات پلتفرم به عنوان یک سرویس (PaaS) هست که از مجازیسازی در سطح سیستم عامل برای تولید بستههای نرمافزاری استفاده میکنه. اولین نسخه داکر در سال 2013 میلادی منتشر شد.
داکر میتونه یک اپلیکیشن و متعلقات اون رو در یک نگهدارنده مجازی اجرا کنه که روی لینوکس، ویندوز یا MacOS اجرا میشه. داکر اپلیکیشنهای بستهبندی شده ایجاد میکنه و به این بستهها کانتینر یا نگهدارنده گفته میشه. کانتینرها نقش اساسی در این نرمافزار ایفا میکنن.
کانتینر داکر (Docker Container)
نگهدارنده یا Container یک واحد نرمافزاری استاندارد هست که کدها و تمام متعلقات اون رو بستهبندی میکنه. به این ترتیب، اپلیکیشن در محیطهای محاسباتی مختلف، سریعتر و با اطمینان بیشتر اجرا میشه. هر کانتینر یک محیط ایزوله شده رو مشابه یک ماشین مجازی فراهم میکنه. برخلاف ماشینهای مجازی، کانتینرهای داکر یک سیستم عامل کامل رو اجرا نمیکنن، بلکه هسته میزبان رو به اشتراک میذارن و مجازیسازی رو در یک سطح نرمافزاری انجام میدن.
امکان استفاده از Containerها هم برای اپلیکیشنهای تحت ویندوز و هم برنامههای کاربردی مبتنی بر لینوکس در دسترس هست. در واقع میتوان برنامههای ویندوزی، لینوکسی و فایلهای اجرایی (EXE) رو در کانتینرهای داکر اجرا کرد. نرمافزارهای محفظهبندی شده یا Containerized همواره به صورت یکسان و فارغ از زیرساختشون اجرا میشن. کانتینرها نرمافزار رو از محیطشون جدا میکنن و با استفاده از کانتینرها اطمینان حاصل میشه که نرمافزار به صورت یکپارچه و فارغ از تفاوتهایی مثلاً میان توسعه و سطحبندی عمل میکنه.
دلیل محبوبیت داکر؟
استفاده از کانتینرها و داکر به این دلیل بسیار محبوب شده که اونها خیلی از چالشهای توسعه نرمافزار رو برطرف میکنن. امکان محفظهسازی تنها برای یک بار و اجرا در همه محیطها، منجر به کاهش فاصله میان محیط توسعه و سرورهای تولید محصول میشه. استفاده از کانتینرها این اطمینان و اعتماد رو به وجود میاره که همه محیطها برابر هستن. در صورتی که عضو جدیدی به تیم توسعه اضافه بشه، این فرد تنها لازمه از دستور «docker run» برای راهاندازی نمونه توسعه خودش استفاده کنه. محیط زنده (Live Environment) دقیقاً با نمونه محلی مطابقت خواهد داشت و از حالتهایی که فقط روی یک ماشین کار میکنه جلوگیری خواهد شد.
مزایای داکر
تا اینجا با شرح چیستی داکر، کانتینر داکر و دلیل محبوبیتش آشنا شدیم. واضح هست که فواید بسیاری در اجرای محیط توسعهای وجود داره که دستگاه یا سیستم عامل زیرساختی برای اون اهمیت و تفاوتی نداره. در ادامه به برخی از فواید و مزایای داکر اشاره میکنیم:
- ثبات و پایداری
- خودکارسازی
- صرفهجویی در فضا
- امکان استفاده از داکر در مک و ویندوز
- سادهسازی فرایند خطایابی
- افزایش سرعت فرایند آمادهسازی
- جامعه توسعهدهندگان داکر بسیار وسیع هست.
معایب داکر
با وجود مزایای متعدد، همه چیز در فناوری داکر بینقص نیست. برخی موارد در مورد داکر میتونه چالش برانگیز باشه و بهتره آشنایی با این موارد وجود داشته باشه. بنابراین، در ادامه فهرستی از معایب داکر ارائه شده:
- برخی کمبودها در مستندات داکر وجود دارن.
- داکر در محیطهای غیربومی تا حدودی مشکلات عملکردی از خودش بروز میده.
- عملکرد داکر برای MacOS چندان قابل قبول نیست و در حد آزمایشی هست.
- منحنی یادگیری برای مهاجرت به داکر میتونه قابل توجه باشه.
در نهایت اگه علاقهمند به یادگیری این نرمافزار هستی و هیچ پیش زمینه ای نداری، پیشنهاد میکنیم سری به بهترین دوره های آموزشی داکر بزنی:)