آموزش نصب و استفاده از Docker Compose

آموزش نصب و استفاده از 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

۱۶
۱۴۰۴/۲/۲۸