در سری مقالههای 5 دقیقه با ارژنگ، مهمترین سمتهای شغلی و ابزارهایی را که در علم روز دنیا موردنیاز افراد قرار میگیرند را بررسی میکنیم. این قسمت از "5 دقیقه با ارژنگ" را به بررسی پلتفرم کاربردی داکر در فضای مجازیسازی سیستمها اختصاص دادهایم. اگر شما هم به فرآیند مجازیسازی زیرساخت و کانتینرسازی با داکر علاقمندید این مقاله را به هیچوجه از دست ندهید.
داکر (Docker) یک پلتفرم متنباز، برای مدیریت کانتینرها (Container) است، که سرعت توسعه، تست و اجرای برنامهها را افزایش میدهد. این پلتفرم، نرمافزار را در واحدهای استانداردی به نام کانتینر بستهبندی میکند؛ کانتینر داکر شامل تمامی کتابخانهها، ابزارهای سیستمی، رانتایمها و کدهای لازم برای اجرای برنامه است.
داکر برای اولینبار در 20 مارس 2013 با هدف سادهسازی استفاده از کانتینرها منتشر شد. با افزایش سرعت توسعه و تحویل برنامههای کاربردی، این پلتفرم محبوبیت زیادی بدست آورد.
برای اینکه بدانیم داکر چیست، ابتدا بهتر است به دو مبحث به ظاهر نامربوط بپردازیم: کانتینرهای حملونقل و ماشینهای مجازی
مروری بر تاریخچه کانتینرهای حملونقل!
قبل از استفاده از کانتینرها، حملونقل یک محموله، کار سخت و زمانبری بود؛ که مشکلات زیادی در تجارت جهانی ایجاد میکرد. محمولهها در اشکال و اندازههای مختلف وارد میشدند و عدم وجود بستهبندی استاندارد، ایمنسازی و چیدن آنها را به چالشی بزرگ تبدیل میکرد. درنتیجه این موضوع، هزینههای حملونقل به شدت افزایش یافت.
اتخاذ ابعاد استاندارد و رویههای جابهجایی، به کانتینرها اجازه داد تا به راحتی بین کشتی، قطار و کامیونها جابهجا شوند. این استانداردسازی کلید موفقیت کانتینرهای حملونقل بود.
استانداردسازی کانتینرهای حملونقل، به آنها این امکان را میدهد تا به راحتی از یک مکان به مکان دیگر منتقل شوند. این قابلیت حمل، یکی از ویژگیهای کلیدی کانتینرهای داکر نیز به شمار میآید که در ادامه بیشتر به توضیح آن میپردازیم.
مجازیسازی چیست؟
مجازیسازی، فناوری است که به شما این امکان را میدهد تا چندین محیط شبیهسازی شده با نسخههای مجازی چیزی مانند یک سیستمعامل، یک سرور یا یک شبکه را بر روی یک ماشین فیزیکی ایجاد کنید. به طور منطقی، چندین ماشین مجازی میتوانند روی یک قطعه سختافزار اجرا شوند که در شبکههای مجازی صحبت از یک یا چند رایانه است که روی رایانهای واحد قرار میگیرند.
بیشتر بخوانید: مجازی سازی سرور چیست؟
کانتینر(Container) چیست؟
کانتینر، یک بسته نرمافزاری سبک، مستقل و قابل اجرا است، که شامل تمامی المانهایی است که برای اجرای یک نرمافزار لازم داریم؛ از جمله کد، رانتایم، ابزارهای سیستم و کتابخانهها. کانتینرها برای جداسازی برنامهها و وابستگیهایشان طراحی شده و اطمینان حاصل میکنند که به طور یکپارچه، در محیطهای مختلف اجرا شوند. چه برنامه روی رایانه شما اجرا شود یا در فضای ابری، رفتار پلتفرم یکسان باقی میماند. برخلاف ماشینهای مجازی که سختافزار را مجازی میکنند، کانتینرها به مجازیسازی سیستمعامل میپردازند؛ یعنی یک کانتینر از سیستمعامل برای ایجاد برنامهای مجازی و کتابخانههای آن استفاده میکند.
چرا از کانتینرها استفاده میکنیم؟
استفاده از کانتینرها میتواند به دلایل مختلفی انجام گیرد که در ادامه به چند نمونه از مهمترین آنها میپردازیم.
قابلیت حمل: کانتینرها به گونهای طراحی شدهاند که مستقل از پلتفرم باشند. آنها میتوانند بر روی هر سیستمی که از زمان اجرای کانتینر پشتیبانی میکند بدون توجه به سیستمعامل اصلی، اجرا شوند. این کار جابهجایی برنامهها را بین محیطهای مختلف، از جمله ماشینهای توسعه محلی، سرورهای آزمایشی و پلتفرمهای ابری مختلف آسانتر میکند.
کارایی: کانتینرها، سیستمعامل میزبان را به اشتراک میگذراند، که باعث کاهش حجم کاری نسبت به یک ماشین مجازی یا چند سیستمعامل میشوند. با کانتینرها، میتوانید برنامههای بیشتری را روی همان سختافزار اجرا کنید؛ بدون اینکه کارایی آن کاهش یابد.
سازگاری: کانتینرها تمام اجزای لازم از جمله کد برنامه، رانتایم و کتابخانهها را در یک واحد، بستهبندی میکنند. این کار تضمین میکند که برنامه به طور یکپارچه در محیطهای مختلف از توسعه تا تولید اجرا خواهدشد.
جداسازی: کانتینرها یک محیط سبکوزن و ایزوله را برای اجرای برنامهها فراهم میکنند. هر کانتینر، برنامه و وابستگیهای آن را محصور و از عدم تداخل آنها با یکدیگر اطمینان حاصل میکند.
استقرار سریع: کانتینرها را میتوان به سرعت ایجاد و راهاندازی کرد. این قابلیت، به ویژه برای برنامههایی که برحسب تقاضا نیاز به استقرار سریع دارند بسیار سودمند است.
داکر چیست و چگونه کار میکند؟
داکر در سادهترین تعریف، ابزاری برای ایجاد و مدیریت کانتینرها است. برای شناخت داکر باید با دو مفهوم Dockerfile و Docker Image آشنا شویم.
یک Dockerfile مجموعهای از دستورالعملها برای ساخت یک Docker Image را در بر میگیرد. Docker Image، به عنوان یک الگو برای ایجاد کانتینرهای داکر عمل میکند.
این الگو شامل تمام کدهای لازم، رانتایم، ابزارهای سیستم، کتابخانهها و تنظیمات لازم برای اجرای یک برنامه نرمافزاری است. بنابراین، یک Dockerfile برای ساخت یک Docker Image مورد استفاده قرار میگیرد؛ سپس این Docker Image، به عنوان الگویی برای ایجاد یک یا چند کانتینر عمل میکند.
تصاویر داکر، پس از ایجاد تغییرناپذیر هستند. اگر نیاز به ایجاد تغییرات در یک برنامه دارید، باید Dockerfile را تغییر داده و تصویری جدید ایجاد کنید. این تغییرناپذیری، تضمینکننده ثبات و تکرارپذیری در استقرار برنامه است.
نقش داکر در CI/CD و DevOps
داکر به عنوان پلتفرمی برای توسعه و استقرار برنامهها، نقش مهمی در روشهای ادغام و استقرار مداوم (CI/CD) دارد. یکی از مولفههای کلیدی CI/CD این است که برنامهها میتوانند در محیطهای ایزوله ساخته و مورد آزمایش قرار گیرند و اطمینان حاصل شود که هیچ وابستگی غیرمنتظرهای رخ نخواهد داد.
اجزای Docker
داکر از اجزای متنوعی ساخته شده است که چند مورد از مهمترین آنها عبارتند از:
Docker Engine: سرور، CLI و اجزای API لازم برای میزبانی و اجرای کانتینرها را فراهم میسازد.
Dockerfile: حاوی دستورالعملها برای ساخت Docker Image است.
Docker Image: فایلهای حاوی کد و پیکربندیهای کانتینر را شامل میشود. Image در واقع محفظهای است که هنوز اجرا نشده است؛ Docker Image یک فایل قابل حمل بوده و شامل یک سری از دستورالعملهاست که مشخص میکند کانتینر کدام کامپوننتهای نرمافزاری را چگونه باید اجرا کند.
Container: نمونهای در حال اجرا از یک image است، که محیطی کاربردی و ایزوله با پتانسیل شبکه و ذخیرهسازی فراهم میکند.
DockerHub: مخزنی برای ذخیرهسازی imageها، با گزینههای عمومی و خصوصی برای توسعهدهندگان است. خطوط CI/CD میتوانند از DockerHub به عنوان منبع استفاده کنند.
Docker Desktop: به رابط مدیریتگرافیکی برای کانتینرهای داکر در لینوکس، ویندوز و مک گفته میشود.
Docker Compose: فایل YAML برای سادهسازی مدیریت کانتینرهای متعدد در پروژههای بزرگتر را Docker Compose مینامند.
برخی باورهای غلط درباره داکر
افراد تازهوارد ممکن است دچار این تصور اشتباه باشند که کانتینرها جایگزین ماشینهای مجازی میشوند؛ اینطور نیست. دو فناوری مجازیسازی و کانتینر هر کدام نقشی در فناوری اطلاعات مدرن دارند، که گاهی به صورت جداگانه عمل میکنند و گاهی مکمل یکدیگرند.
از جمله نگرانیهای برخی از کاربران استفاده از خط فرمان (Command Line Interface) داکر است. با این حال، Docker Desktop برای تمامی پلتفرمهای اصلی در دسترس بوده و یک رابط گرافیکی کاربرپسند ارائه میدهد.
تصور اشتباه دیگر این است که داکر تنها برای کاربران لینوکس در دسترس قرار میگیرد. شکی نیست که داکر لینوکسمحور است اما برای ویندوز و مک نیز میتوان از آن استفاده کرد. کانتینرها روی یک VM ویژه روی این پلتفرمها اجرا میشوند.
سخن پایانی
در این مقاله به بررسی کامل داکر و اجزای آن پرداختیم اگر به این زیرمجموعه اساسی دواپس و مدیریت کانتینرها با پلتفرم داکر علاقمندید همین حالا اقدام کنید.
موسسه آموزش عالی ارژنگ، با برگزاری انواع دورههای DevOps، داکر و تمامی حوزههای فناوری اطلاعات، طبق سرفصلهای بینالمللی و آخرین متدهای آموزشی همراه مهارتآموزان عزیز در سراسر ایران است. برای کسب اطلاعات درباره دورهها و شناخت اساتید، وارد وبسایت ارژنگ شده و روی صفحه تقویم دورهها کلیک کنید.
راههای ارتباط با ما:
Instagram.com/arjanginstitute
021-41867
به عنوان اولین نفر، نظر خود را بنویسید!