ابزار و شرایط Docker
هنگام استفاده از Docker، با اصطلاحات زیر مواجه خواهید شد:
- داکر هاب
یک منبع اجتماعی برای کار با Docker که در ابر میزبانی میشود. Docker Hub بیشتر برای میزبانی ایمیجها استفاده میشود، اما همچنین برای احراز هویت کاربر و اتوماسیون ایمیج سازی استفاده میشود. هر کسی میتواند ایمیج را بهصورت رایگان در Docker Hub آپلود کند. افراد یا سازمانهایی که تصاویر را به Docker Hub میدهند بههیچوجه بررسی یا تأیید نمیشوند.
- فروشگاه داکر
فروشگاه داکر یک مخزن مبتنی بر ابر است که قابلمقایسه با Docker Hub است، با این تفاوت که ایمیجهای موجود در فروشگاه داکر توسط کسبوکارهای تجاری که داکر تأیید یا تأیید کرده است، کمک کرده است.
- پرونده داکر
یک فایل متنی با دستورات برای ایجاد یک ایمیج Docker. دستوراتی که میتوانید در یک Dockerfile مشخص کنید از پیچیده (مانند مشخص کردن یک ایمیج موجود برای استفاده بهعنوان پایه) تا پایه (مانند مشخص کردن یک ایمیج موجود برای استفاده بهعنوان پایه) (مانند کپی کردن فایلها از یک دایرکتوری به دیگری) متغیر است.
بهعنوانمثال، شما میتوانید یک Dockerfile ایجاد کنید که با ایمیج اوبونتو شروع میشود و سپس وب سرور اپاچی، برنامه شما و سایر پارامترهای پیکربندی موردنیاز شما را اضافه میکند. دستور ساخت docker برای ایجاد یک ایمیج از Dockerfile استفاده میشود.
- ایمیج داکر
یک بسته قابلاجرا و مستقل که میتواند در یک ظرف استفاده شود. یک ایمیج داکر یک باینری است که شامل تمام اجزای لازم برای اجرای یک کانتینر داکر و ابرِ داده است که نیازها و قابلیتهای کانتینر را مشخص میکند.
یک ایمیج شامل همهچیز موردنیاز برای اجرای یک برنامه، ازجمله کد اجرایی، هر نرمافزاری که برنامه به آن متکی است و هرگونه تنظیمات پیکربندی لازم است. شما میتوانید ایمیجهای خود را ایجاد کنید (با استفاده از Dockerfile) یا از ایمیج ایجادشده توسط دیگران استفاده کنید و در یک رجیستری (مانند Docker Hub) در دسترس قرار دهید.
دستور ساخت docker برای ایجاد یک ایمیج از Dockerfile استفاده میشود. دستور docker run برای اجرای یک ایمیج در container استفاده میشود.
- کاربران
اصطلاح "گودال ماسه بازی" به یک محیط محاسباتی اشاره دارد که در ان هر چیزی که در داخل آن اتفاق میافتد در داخل گودال ماسه بازی باقی میماند. اگر "rm −rf" را در داخل گودال ماسه بازی اجرا کنید، محتویات گودال ماسه بازی حذف خواهد شد، اما سیستم میزبان که دارای گودال ماسه بازی است، تحت تأثیر قرار نخواهد گرفت.
- ایمیج Docker یک نوع ظرف هستند!
ایمیجهای داکر شامل کد منبع برنامه اجرایی و ابزارهای موردنیاز، کتابخانهها و وابستگیهای موردنیاز برای اجرای کد برنامه در یک ظرف است. هنگامیکه ایمیج Docker را اجرا میکنید، یک نمونه ظرف (یا چند) از کد ایجاد میکند.
اگرچه امکان ایجاد یک ایمیج Docker از ابتدا وجود دارد، اکثر توسعهدهندگان از مخازن محبوب استفاده میکنند. یک ایمیج پایه میتواند برای ایجاد چندین ایمیج داکر استفاده شود و تمام تصاویر ایجادشده یک پشته را به اشتراک میگذارند.
لایهها تصاویر داکر را تشکیل میدهند و هر لایه نشاندهنده نسخه متفاوتی از ایمیج دادهشده است. یکلایه بالا جدید هر زمان که یک توسعهدهنده تغییرات خاصی را در ایمیج موردنیاز ایجاد میکند، ایجاد میشود و این لایه بالا جایگزین لایه بالا قبلی بهعنوان نسخه فعلی ایمیج میشود. لایههای قبلی بهصورت عقبگرد نگهداری میشوند یا در پروژههای آینده دوباره استفاده میشوند.
یکلایه ظرف جدید هر زمان که یک ظرف از یک ایمیج داکر تشکیل میشود ایجاد میشود. تغییرات در ظرف، به معنی اضافه کردن یا حذف فایلها، فقط در لایه ظرف ذخیره میشود و تنها درحالیکه ظرف در حال اجرا است قابلمشاهده است. این فرایند ایجاد ایمیج تکراری کارایی کلی را بهبود میبخشد زیرا موارد متعدد کانتینر زنده میتوانند از یک ایمیج پایه واحد اجرا شوند و یک پشته را به اشتراک بگذارند.
- Dacker Daemon یک برنامه یکسان است که در پسزمینه اجرا میشود
Docker daemon سرویسی است که بر روی سیستمعاملهای شما مانند ویندوز، macOS یا iOS اجرا میشود. این سرویس خاص، که بهعنوان مرکز کنترل اجرای Docker عمل میکند، تصاویر Docker شما را با استفاده از دستورات مشتری فردی تولید و مدیریت میکند.
- Docker Register یک رجیستری برای ظروف Docker است
یک رجیستری داکر یک مکانیسم ذخیرهسازی و توزیع ایمیج Docker منبع باز است. رجیستری به کاربران اجازه میدهد تا نسخههای ایمیج را در مخازن با برچسب زدن آنها پیگیری کنند. Git، یک ابزار کنترل نسخه، نیز برای انجام این کار استفاده میشود.
چرا داکر اهمیت دارد؟
پروژه داکر خود را بهعنوان "داکر برای همه" تبلیغ میکند. و دلیل آن سهولت استفاده از آن است. حتی یک فرد غیر فنی بهراحتی میتواند هر پروژه Docker را تنها با چند دستور شروع و اجرا کند، زیرا این تکنولوژی بسیار ساده است و بهطور کامل منبع باز است.
فرض کنید که یک تیم متشکل از چهار توسعهدهنده در حال کار بر روی یک پروژه واحد هستند. درعینحال، یکی از ویندوز استفاده میکند و دیگری از لینوکس استفاده میکند و سوم و چهارم از macOS استفاده میکنند. همانطور که میبینید، آنها از محیطهای جداگانه برای ایجاد یک برنامه یا نرمافزار واحد استفاده میکنند و باید کارهایی را با توجه به دستگاههای خود انجام دهند، مانند نصب کتابخانهها و فایلهای مختلف برای سیستم خود و غیره.
و در چنین شرایطی، بهویژه در سطح بالاتر یا سازمانی، اغلب منجر به درگیریها و چالشهای متعدد در طول چرخه عمر توسعه نرمافزار میشود. از سوی دیگر، راهحلهای کانتینر سازی مانند Docker این مسئله را از بین میبرد.
چرا از Docker Compose استفاده کنیم؟
داکر Compose یک سرویس مفید است که به کاربران اجازه میدهد چندین کانتینر را بهعنوان یک کانتینر اجرا کنند. تمام ظروف فردی در اینجا در حالت انزوا اجرا میشوند، اما در صورت نیاز میتوانند با یکدیگر ارتباط برقرار کنند. زبان اسکریپت YAML، که به معنای زبان نشانهگذاری دیگری است و بر اساس XML است، نوشتن فایلهای Docker را راحتتر میکند. یکی دیگر از ویژگیهای عالی Docker Compose این است که کاربران میتوانند از یک دستور واحد برای فعال کردن تمام سرویسها (ظروف) استفاده کنند.
شما باید از یک ابزار ارکستراسیون کانتینر برای نظارت و مدیریت چرخههای کانتینر در تنظیمات پیچیدهتر استفاده کنید. اگرچه داکر ابزار ارکستراسیون یکسان خود (Docker Swarm) را دارد، اکثر توسعهدهندگان Kubernetes را ترجیح میدهند.
مزایای نوشتن Docker
- اصطلاح "استقرار تک میزبان" به توانایی اجرای همهچیز در یک قطعه سختافزار اشاره دارد.
- اسکریپتهای YAML برای پیکربندی سریع و آسان فراهم میکنند.
- Docker Compose با کاهش زمان لازم برای تکمیل فعالیتها ، بهرهوری را افزایش میدهد.
- امنیت - ازآنجاکه تمام کانتینرها از یکدیگر جداشدهاند، چشمانداز تهدید کاهش مییابد.
سخن پایانی
داکر یک ابزار فوقالعاده است که در روند استقرار مداوم کمک میکند. این بهخوبی با نرمافزار مدیریت پیکربندی موجود یکپارچهشده است. اکوسیستم بزرگ و درحالتوسعه آن دارای طیف گستردهای از برنامههای کاربردی است. داکر مزایای زیادی دارد و میتواند به شما در ساخت برنامههای کانتینری و برنامههای چند کانتینری کمک کند. و این چابکی در ارایهی خدمات طبق DevOps و ITIL.