
آموزش نصب و استفاده از 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.3
Docker 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:alpine
OutputUntagged: 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