مقدمه
داکر چیست و داکرایز کردن چیست؟
یکی از اهداف مهم سیستمهای جدید توسعه نرمافزار، نگهداری برنامهها در یک محیط اما به صورت جداگانه است. داکر یک پلتفرم نرمافزاری جهت ایجاد اپلیکیشنهای مبتنی بر Container است که به صورت محیطهای اجرایی کوچک و سبک که به طور مشترک از هسته سیستم عامل استفاده میکنند اما ایزوله و جدا از هم قرار دارند، میباشد. توسعه نرمافزاری Container با استفاده از داکر جان تازهای گرفت و با بهکارگیری میکرو سرویسها، به عنوان توسعه ابری (Cloud-native Development) شناخته شد. در ادامه این مطلب، به توضیح و بررسی کامل تمام این مفاهیم و شرح داکر و داکرایز کردن خواهیم پرداخت.
داکر چیست؟
Docker یک پروژه متن باز است که اجازه میدهد کانتینر یا برنامههای مبتنی بر آن ساخته شوند. با وجود این که داکر در شروع کار برای لینوکس ساخته شد، اما امروزه به خوبی در ویندوز و macOS هم اجرا میشود. جهت ایجاد یک برنامه با داکر، بایستی از کامپوننتهای مختلفی استفاده کنیم. برای درک عمیقتر مفهوم داکر، به بررسی این کامپوننتها میپردازیم:
- Dockerfile
هر کانتینر داکر با یک فایل داکر آغاز به کار میکند. داکرفایل یک فایل متنی است که داخل آن با یک سینتکس ساده و قابل فهم، دستورالعملهای ساخت Docker image قرار گرفتهاند. این فایل، اطلاعات بسیار مهمی را دربرمیگیرد که برای راهاندازی داکر ضروری هستند. در واقع داکرفایل مشخص میکند که پشت کانتینر ما، چه سیستم عاملی قرار بگیرد و چه زبانها، متغیرهای محلی یا پورتهای شبکهای استفاده شوند. مهمترین کار داکرفایل، مشخص کردن کاری است که کانتینر بعد از اجرا، باید انجام دهد.
- Docker image
هنگامی که کار نوشتن داکرفایل را به پایان رساندید، قابلیتی به نام Docker Build را فراخوانی میکنید که مسئولیت دارد یک تصویر از سیستم عامل اصلی یا همان image بر اساس محتویات داکرفایل شما بسازد. داکرفایل شامل دستورالعملهای جهت ایجاد یک تصویر است؛ در صورتی که Docker image یک فایل قابل حمل بوده که شامل دستورالعملهای مشخصکننده کامپوننتهای نرمافزارهای اجرایی کانتینر و نحوه اجرای آنها میباشند. داکرفایل تعدادی فایل را از مخزنهای مختلف دانلود میکند و در این بخش واضحا مشخص میشود که کدام نسخهها باید دریافت شوند. تصویر ساختهشده استاتیک است؛ یعنی یک بار ساختن آن کافی بوده و احتیاجی به تغییر آن نخواهید داشت.
- Docker run
قابلیت داکر ران در واقع یک دستور است که باعث راهاندازی کانتینر میشود. هر کانتینر، یک instance یا نمونه از تصویر است و ماهیت آن موقتی میباشد. با این حال، میتوان آنها را متوقف نمود یا ریاستارت کرد. هر image میتواند تعداد زیادی کانتینر داشته باشد؛ البته تا زمانی که هر کدام از آنها، نام متفاوتی داشته باشند.
- Docker Hub
درست است که ایجاد کانتینرها کار آسانی است؛ اما لازم نیست برای هر تصویر، از اول یک کانتینر بسازید. داکر هاب یک مخزن Saas برای اشتراکگذاری و مدیریت کانتینرهاست که در آنها میتوانید تصاویر رسمی داکر که معمولا به صورت متن باز هستند را پیدا نمایید و پروژههای خود را به این Repository بیافزایید.
- Docker Engine
هسته اصلی داکر است که یک تکنولوژی کلاینت/سرور سازنده و مجری کانتینرها میباشد. این موتور در دو نسخه Enterprise یا Community عرضه میشود که اولی با قابلیتهای اضافه و حق اشتراک و دومی رایگان است.
Container در داکر چیست؟
در صورت ایزوله کردن برنامههای یک محیط، فعالیت آنها بر یکدیگر تاثیری نخواهد داشت. البته اجرای این روند به علت استفاده از پکیجها، کتابخانهها و دیگر کامپوننتهای نرمافزاری، پیچیده میشود. یکی از روشهای پیادهسازی این تکنولوژی، استفاده از ماشین مجازی است که برنامهها را روی یک سختافزار اما کاملا جدا از هم نگهمیدارد. کانیترها ظروف کوچک و ایزولهای هستند که در داخل داکر قرار دارند و در محیط داکر میتوان چند کانتینر با چند برنامه در حال اجرای متفاوت ایجاد کرد.
نحوه کار داکر (داکرایز کردن)
دارکر را میتوان یک مجازیساز در نظر گرفت؛ اما نه به گونهای که ماشینهای مجازی کار میکنند. این سرویس به شما کمک خواهد کرد تا یک محیط را به چند بخش تقسیم کرده و در هر بخش، یک برنامه مجزا اجرا کنید. برای درک بهتر، داکر را مانند ماشین مجازی در نظر میگیریم که با Hypervisor عملیات شبیهسازی را انجام میدهند. اما در داکر، این لایه حذف شده و ما مستقیما با هسته سیستم عامل کار خواهیم کرد. این کار، بازدهی سیستم را بالا میبرد و ما به جای اینکه چند سیستم عامل را روی یک شبیهساز نصب کنیم، یک بار داکر را نصب میکنیم که مانند نصب یک نرمافزار عادی است. سپس داکر محیطهای مستقلی به نام Container ایجاد میکند تا شامل بستههای نرمافزاری مختلفی باشند. حالا شما خواهید توانست در داکر، کانتینر ایجاد کرده و پروژههای خود را به صورت مستقل اجرا نمایید.
کاربرد داکر چیست؟
از مهمترین کاربردهای داکر میتوان موارد زیر را نام برد:
- رفع ایرادات، توسعه نرمافزار و تحویل دادن آن در سریعترین زمان ممکن و به صورت پیوسته
- استقرار و پیادهسازی پروژههای مختلف بدون محدودیت
- اجرای بار کاری زیاد روی همان نرمافزار به صورت همزمان
- پایدارسازی مطمئن انواع نرمافزار
- اجرا و مقیاسبندی واکنشگرا و امکان پشتیبانی از حجمهای کاری پرتابل
- استفاده از دیتابیسهای زودگذر
- استفاده از ابزارهای یک بار مصرف و عدم نیاز به نصب نرمافزار برای انجام هر پروژه
- اجرای کامل دستههای نرمافزاری با استفاده از کامپوننت Docker Compose
- قابلیت حمل بیشتر بدون نیاز به هر گونه تغییر
- انجام پروژهها با اشغال حجم کمتر و امکان آپدیتهای جزئی
- ایجاد کانتینرهای خودکار بر اساس کد منبع اپلیکیشنهای دیگر
- ورژنبندی کانتینرها و استفاده مجدد از آنها
- امکان استفاده از کتابخانههای مشترک
- اجرای کدهای بیشتر روی یک سرور و صرفهجویی در هزینه هر پروژه
سخن پایانی
داکر یک ابزار اوپن سورس جهت طراحی و ایجاد برنامهها به کمک ابزار کانتینر است. کانتینر به برنامه نویس کمک میکند تا پروژه خود را با تمام بخشهای خود مثل کتابخانهها و وابستگیهای دیگر، به صورت یک پکیج دربیاورد و برنامه نهایی بتواند در سیستمهای دیگر بدون نیاز به تنظیمات خاص یا ابزارهای جانبی، اجرا شود. داکر مانند ماشین مجازی است اما بازدهی فوقالعاده بالاتری دارد و نحوه کار آن کمی با ماشین مجازی متفاوت است. جهت کسب اطلاعات بیشتر میتوانید به وبسایت شرکت برنامه نویسی وب نگاه مراجعه فرمایید.