داکر یک پلت فرم منبع باز برای مدیریت چرخه حیات کانتینر است. کانتینرها اجزای قابل حمل و کارآمدی هستند که در یک محیط مجازی کار می کنند. شرکت داکر با ارائهدهندگان و فروشندگان خدمات ابری مانند Red Hat و Microsoft برای توسعه فناوریهای کانتینریسازی همکاری میکند.
امروزه مجازی سازی بخشی ضروری از فناوری اطلاعات (IT) است که به شدتمورد استفاده قرار می گیرد و پایه و اساس فناوری ابری (Cloud) است. دو نوع اصلی مجازی سازی وجود دارد:
ماشینهای مجازی: مجازیسازی در لایه سختافزار، با پیکربندی ماشین مجازی، سیستم عامل و برنامهها و خدمات پشتیبانیکننده.
Containers: مجازی سازی در لایه سیستم عامل، با یک ساختار قابل حمل که شامل برنامه و هر گونه کتابخانه می شود.
داکر یک راه عالی برای شروع کار با کانتینرها است. داکر دارای Document های قوی است و Docker Engine (که از کانتینرها پشتیبانی می کند) برای پلتفرم های رایج لینوکس، ویندوز و macOS در دسترس است.
محیطهای ابری از کانتینر ها نیز پشتیبانی میکنند، بنابراین میتوانید برنامههای کانتینری خود را در AWS، Azure، GCP یا سایر ارائهدهندگان خود مستقر کنید.
اهمیت داکر در فناوری اطلاعات
کانتینرها فواید زیادی برای سازمان ها دارد، از جمله این فواید میتوان به بازگشت سرمایه (ROI)، کارایی، استانداردسازی، مقیاسپذیری، سادگی و قابلیت حمل بالا اشاره کرد.
داکر به طور خاص نقاط قوت خود را روی میز آورده است، از جمله:
- پشتیبانی توسط همه ارائه دهندگان خدمات ابری بزرگ
- قابلیت نصب بر روی لینوکس، macOS و ویندوز
- سادگی
در اینجا چند نکته در هنگام تصمیم گیری در مورد اینکه آیا کانتینر های داکر ابزار مناسبی برای کار شما هستند، وجود دارد:
- ادغام یک رابط گرافیکی دشوار است، بنابراین برای برنامه های مبتنی بر گرافیک مناسب نیست.
- برنامه ها در داخل کانتینرها از یکدیگر جدا می شوند، اما همه آنها سیستم عامل یکسانی دارند، بنابراین خطر بالقوه ای در آن لایه وجود دارد.
- داکر با امتیازات روت اجرا می شود، بنابراین اگر فرآیندی با شکست مواجه شود، این کار را به عنوان روت انجام می دهد که بسیار خطرناک است.
- ممکن است پیکربندی ذخیره سازی و شبکه برای برخی از کاربران چالش برانگیز باشد.
امکان اشتراک گذاری کانتینرها به صورت بومی بین لینوکس، macOS و ویندوز وجود ندارد و ممکن است بین توزیعهای مختلف لینوکس با مشکل مواجه شوید. در حالی که مستندات داکر به درستی بیان میکند که کانتینرهای Docker بر روی ویندوز و macOS اجرا میشوند، واقعیت این است که Docker (و کانتینرها) در یک ماشین مجازی روی این دو پلتفرم اجرا میشوند.
نقش داکر در CI/CD و دواپس
داکر به عنوان بستری برای توسعه و استقرار Application ها ، نقش اساسی در روشهای بهبود مستمر و استقرار مداوم (CI/CD) دارد. یکی از مؤلفههای کلیدی خطوط CI/CD این است که میتوانند به صورت تمیز و ایزوله ساخته و آزمایش شوند و اطمینان حاصل شود که هیچ وابستگی غیرمنتظرهای به آن وارد نمیشود.
از همان تصاویر، باینری ها و منابع در هر مرحله از این رویکرد استفاده می شود. اسکریپتهای استقرار داکر در ابزارهای رایج Pipeline ها ادغام میشوند تا جریان ساخت > تست > تولید را ارائه دهند. داکر ابزار دیگری برای پر کردن شکاف بین تیم های توسعه و عملیات در یک محیط دواپس است.
Dockerfile (که در ادامه با جزئیات بیشتر توضیح داده شده است) حاوی دستورالعمل ها و تنظیمات لازم برای ساخت ایمیج (Images) هستند. Images منبع اصلی کانتینر ها هستند. از آنجایی که Dockerfiles به سادگی فایل های کد هستند، منطقی است که آنها را با استفاده از کنترل نسخه Git و پلت فرم مخزن مدیریت کنید. بسیاری از محیطهای توسعه در حال حاضر به Git به عنوان یک راهحل دواپس (یا GitOps) متکی هستند.
در Container ها Application و هر آن چیزی که Application برای اجرا شدن به آن نیاز دارد همانند Binary file ها و executable file ها و library file ها وجود ندارد .برای همین موضوع است که داکر به عنوان یکی از Container Engine ها مدعی است که application را میتوانی Build ,ship کنی و در هر Environment ای Deploy کنی بدون نیاز به نصب پیش نیازی .
اجزاء داکر
داکر از چندین مؤلفه تشکیل شده است که با هم کار می کنند تا موارد لازم برای کانتینر را فراهم کنند و کانتینرها را در خط لوله CI/CD شما یکپارچه کنند.
در اینجا چند تا از اجزای Docker آورده شده است:
Docker Engine: سرور، دیمون، CLI و اجزای API لازم برای میزبانی و اجرای کانتینرها را فراهم می کند.
Dockerfile: حاوی دستورالعمل هایی برای ساخت Image های داکر است.
Images: فایل های تغییرناپذیر حاوی کد و پیکربندی کانتینر.
Container: یک نمونه در حال اجرا از یک Image، که یک محیط کاربردی ایزوله با پتانسیل شبکه و ذخیره سازی را فراهم می کند.
DockerHub: مخزن Image است که توسعه دهندگان میبوانند به عنوان یک منبع با گزینه های عمومی و خصوصی برای برای ذخیره Images، خطوط CI/CD استفاده کنند.
Docker Desktop: رابط مدیریت گرافیکی برای کانتینرهای داکر در لینوکس، ویندوز و macOS.
Docker compose: فایل YAML برای سادهسازی مدیریت کانتینرهای متعدد در پروژههای بزرگتر.
Docker Engine
میتوان گفت Docker Engine از ۳ جز اصلی تشکیل شده است :
- Docker Daemon
- Docker client
- API
به Docker Daemon همان Dockerd هم میگویند که در گذشته طراحی Monolothic داشت و تمامی ایرادات وارد بر این طراجی به داکر نیز وارد بود.
Docker client و Docker Daemon از طریق یک API با یکدیگر صحبت میکنند .
Docker Image چیست؟
همانطور که پیشتر گفته شد DockerFile حاوی دستور العمل اجرای نرم افزار است که لایه به لایه هر آنچیز که لازم است را در ان تعریف میکنیم و در نهایت با Build کردن آن به Docker Image میرسیم .
Image های داکر ساختار لایه ای دارند و لایه ها دارای قابلیت Reusable و share شدن هستند به این معنی که از یک لایه ی Docker Image میتوان در چندین Image دیگر استفاده کرد .
اما نکته اینجاست که Image های داکر Readonly هستند و نمیتوانیم با انها تعامل داشته باشیم .پس باید چه کرد ؟
به یک Instance قابل اجرا از Image نیاز داریم که همان Container خواهد بود .
Image های داکر از استاندارد OCI پیروی میکنند و این بدان معنا است که در K8S همچنان با وجود پشتیبانی نکردن از Docker به عنوان Container Engine میتوان استفاده کرد .
آموزش نصب داکر
داکر به صورت بومی بر روی لینوکس اجرا می شود، بنابراین تمرکز این بخش خواهد بود. کاربران ویندوز و macOS می توانند برای نصب از لینک های زیر استفاده کنند:
https://docs.docker.com/desktop/install/windows-install
https://docs.docker.com/desktop/install/mac-install
لینک زیر هم دستورالعمل هایی برای نصب Raspberry Pi ارائه میکند:
https://docs.docker.com/engine/install/raspberry-pi-os
بسته به پیکربندی سیستم لینوکس شما، ممکن است لازم باشد از sudo برای این دستورات استفاده کنید.
با استفاده دستورات زیر، میتوانید موتور کانتینر Docker را روی یک سیستم لینوکس فدورا نصب کنید:
sudo dnf -y install dnf-plugins-core $
sudo dnf config-manager –add-repo https://download.docker.com/linux/fedora/docker-ce.repo $
sudo dnf install docker-ce docker-ce-cli containerd.io $
اگر از لینوکس اوبونتو استفاده می کنید، باید از این دستورات استفاده کنید و از apt استفاده کنید:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin $
توجه: شما باید Repository داکر را برای پکیج apt راه اندازی کنید. اطلاعات مربوط به پیکربندی مخزن را می توانید با دنبال کردن لینک زیر پیدا کنید:
https://docs.docker.com/engine/install/ubuntu
این دستور اجزای اصلی Docker را نصب میکند، از جمله محیط اجرای کانتینر، که کل چرخه حیات کانتینر را مدیریت میکند.
حالا میتوانید با دستورات زیر داکر را راه اندازی و فعال کنید:
sudo systemctl start docker $
sudo systemctl enable docker $
Docker Desktop (برای لینوکس، macOS یا Windows) ساده ترین راه برای دریافت همه اجزا داکر است، اما ممکن است برای همه محیط ها مناسب نباشد. با این حال، دسکتاپ راه خوبی برای شروع است.
جمع بندی
Docker یک پلت فرم منبع باز برای مدیریت کانتینرها است که با ارائه دهندگانی مانند Red Hat و Microsoft همکاری می کند. مجازیسازی برای فناوری اطلاعات و فناوری ابری با دو نوع اصلی آن ضروری است: ماشینهای مجازی و کانتینرها. داکر اسناد قوی و پشتیبانی موتور را برای پلتفرم های لینوکس، ویندوز و macOS ارائه می دهد. محیط های ابری همچنین از کانتینرهایی برای استقرار در پلتفرم های ابری مانند AWS، Azure و GCP پشتیبانی می کنند.
در این مقاله بر اهمیت داکر در فناوری اطلاعات تاکید کردیم و مزایای کانتینرها برای سازمان ها از جمله ROI، کارایی، استانداردسازی، مقیاس پذیری، سادگی و قابل حمل بودن را مطرح کردیم. نقاط قوت Docker شامل پشتیبانی از ارائه دهندگان اصلی خدمات ابری (Cloud) و گزینه هایی برای Linux، macOS و Windows است که نتایج ثابت و قابل تکراری را ارائه می دهد.