
آموزش نصب و استفاده از Docker Compose
Docker فرایند مدیریت پردازشهای برنامه را در کانتینرها ساده میکند. در حالی که کانتینرها از برخی جنبهها شبیه ماشینهای مجازی هستند، اما بسیار سبکتر و مقرونبهصرفهتر از نظر منابع هستند. این ویژگی به توسعهدهندگان این امکان را میدهد که محیط یک برنامه را به چندین سرویس ایزولهشده تقسیم کنند.
برای برنامههایی که به چندین سرویس وابستهاند، هماهنگ کردن تمام کانتینرها برای راهاندازی، ارتباط و خاموش شدن همزمان، میتواند بهسرعت پیچیده شود. Docker Compose ابزاری است که به شما اجازه میدهد محیطهای چندکانتینری را بر اساس تعاریفی که در یک فایل YAML نوشتهاید، اجرا کنید. این ابزار با استفاده از تعاریف سرویسها، محیطهای کاملاً قابل سفارشیسازی با چند کانتینر میسازد که میتوانند شبکهها و حجمهای داده را به اشتراک بگذارند.
در این راهنما، نحوه نصب Docker Compose روی یک سرور Ubuntu و نحوه شروع استفاده از این ابزار را خواهید آموخت.
پیشنیازها
برای دنبال کردن این مقاله، به موارد زیر نیاز دارید:
- دسترسی به یک ماشین محلی Ubuntu یا یک سرور توسعه بهعنوان کاربر غیر ریشه با دسترسی sudo. اگر از یک سرور راه دور استفاده میکنید، داشتن فایروال فعال توصیه میشود. برای راهاندازی این موارد، به راهنمای تنظیم اولیه سرور برای Ubuntu 22.04 مراجعه کنید.
- نصب Docker روی سرور یا ماشین محلیتان، طبق مراحل 1 و 2 مقاله «نحوه نصب و استفاده از Docker در Ubuntu 22.04».
نکته: از نسخه 2 Docker Compose به بعد، Docker به سمت استفاده از دستور CLI با افزونه Compose حرکت کرده و از دستور اصلی docker-compose فاصله گرفته است. اگرچه نصب متفاوت است، اما در استفاده کلی فقط لازم است خط تیره را از دستور حذف کنید، یعنی به جای
docker-composeازdocker composeاستفاده شود. برای جزئیات کامل سازگاری، به مستندات رسمی Docker در مورد سازگاری دستورات مراجعه کنید.مرحله ۱.نصب Docker Compose
برای اطمینان از اینکه جدیدترین نسخه پایدار Docker Compose را دریافت میکنید، این نرمافزار را از مخزن رسمی GitHub آن دانلود خواهید کرد.
ابتدا آخرین نسخه موجود را در صفحه ریلیز بررسی کنید. در زمان نگارش این متن، نسخه پایدار فعلی ۲.۳.۳ است.
برای دانلود، از دستور زیر استفاده کنید:
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-composeسپس، دسترسیهای لازم را برای اجرایی بودن دستور docker compose تنظیم کنید:
chmod +x ~/.docker/cli-plugins/docker-composeبرای بررسی اینکه نصب موفق بوده، میتوانید دستور زیر را اجرا کنید:
docker compose versionخروجی مشابه زیر خواهید دید:
Docker Compose version v2.3.3Docker Compose با موفقیت روی سیستم شما نصب شده است. در بخش بعدی، نحوه تنظیم فایل docker-compose.yml و راهاندازی محیط کانتینریشده با این ابزار را خواهید دید.
مرحله ۲.تنظیم فایل docker-compose.yml
برای نشان دادن نحوه تنظیم فایل docker-compose.yml و کار با Docker Compose، یک محیط سرور وب با استفاده از ایمیج رسمی Nginx از Docker Hub میسازید. این محیط کانتینری یک فایل HTML استاتیک را ارائه میدهد.
ابتدا یک پوشه جدید در پوشه home خود ایجاد کرده و وارد آن شوید:
mkdir ~/compose-demo
cd ~/compose-demoدر این پوشه، یک پوشه به نام app برای ریشه مستندات Nginx بسازید:
mkdir appبا استفاده از ویرایشگر متنی دلخواه، یک فایل index.html در پوشه app ایجاد کنید:
nano app/index.htmlمحتوای زیر را در این فایل قرار دهید:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Docker Compose Demo</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>
<h1>This is a Docker Compose Demo Page.</h1>
<p>This content is being served by an Nginx container.</p>
</body>
</html>فایل را ذخیره کرده و ببندید. اگر از nano استفاده میکنید، با فشردن Ctrl+X، سپس Y و ENTER این کار را انجام دهید.
سپس فایل docker-compose.yml را ایجاد کنید:
nano docker-compose.ymlمحتوای زیر را در آن قرار دهید:
version: '3.7'
services:
web:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./app:/usr/share/nginx/htmlفایل معمولاً با تعیین نسخه شروع میشود که مشخص میکند از کدام نسخه پیکربندی استفاده میکنید. سپس بخش services قرار دارد که سرویسهای محیط را تعریف میکند. در اینجا، یک سرویس به نام web دارید که از ایمیجnginx:alpine استفاده میکند و با دستور ports پورت 8000 سیستم میزبان را به پورت 80 کانتینر متصل میکند.
دستور volumes باعث اشتراکگذاری پوشه app میزبان با مسیر /usr/share/nginx/html در کانتینر میشود که ریشه پیشفرض Nginx را بازنویسی میکند.
فایل را ذخیره کرده و ببندید.
اکنون شما یک صفحه نمایشی و فایل docker-compose.yml آماده دارید. در مرحله بعد، این محیط را با Docker Compose اجرا میکنید.
مرحله ۳.اجرای Docker Compose
با آماده بودن فایل docker-compose.yml، حالا میتوانید با دستور زیر محیط خود را بالا بیاورید:
docker compose up -dاین دستور، تصاویر موردنیاز را دانلود کرده، یک کانتینر برای سرویس web ایجاد میکند و محیط را در حالت پسزمینه اجرا میکند. اگر ایمیج در سیستم شما نباشد، از Docker Hub دانلود خواهد شد.
خروجی نمونه:
Creating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
...
Creating compose-demo_web_1 ... doneنکته: اگر خطای مربوط به مجوز سوکت Docker دریافت کردید، به این معنی است که مرحله ۲ راهنمای نصب Docker را نادیده گرفتهاید. انجام آن مرحله به شما اجازه میدهد بدون sudo از دستور docker استفاده کنید.
اکنون محیط شما در حال اجراست. برای بررسی وضعیت کانتینرها از دستور زیر استفاده کنید:
docker compose psخروجی مشابه:
Name Command State Ports
-------------------------------------------------------------
compose-demo_web_1 ... Up 0.0.0.0:8000->80/tcpاکنون میتوانید در مرورگر خود به localhost:8000 یا آیپی سرور:8000 مراجعه کرده و صفحه نمونه را ببینید.
هر تغییری که در فایل index.html اعمال کنید، بلافاصله در مرورگر نیز دیده خواهد شد.
مرحله ۴.آشنایی با دستورات Docker Compose
برای دیدن لاگهای کانتینر Nginx از دستور زیر استفاده کنید:
docker compose logsبرای متوقف کردن موقتی محیط:
docker compose pauseبرای ادامه مجدد:
docker compose unpauseبرای متوقف کردن اجرا بدون حذف دادهها:
docker compose stopبرای حذف کانتینرها، شبکه و volumeها:
docker compose downتوجه داشته باشید که این دستور ایمیج پایه (nginx:alpine) را حذف نمیکند.
برای حذف ایمیج نیز:
docker image rm nginx:alpineOutputUntagged: nginx:alpine
Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741aنتیجهگیری
در این راهنما یاد گرفتید که چگونه Docker Compose را نصب کرده، یک محیط کانتینری شده با استفاده از Nginx راهاندازی کرده و با دستورات Compose آن را مدیریت کنید.
برای مشاهده تمامی دستورات قابل استفاده، به مستندات رسمی Docker Compose مراجعه نمایید.
منبع DigitalOcean
