زیرساخت ابری هایو

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

فهرست مطالب

Docker فرآیند مدیریت برنامه را در کانتینرها ساده می کند.

در حالی که کانتینرها از جهات خاصی شبیه به ماشین های مجازی هستند، سبک وزن تر و سازگار با منابع هستند. 

این به توسعه دهندگان اجازه می دهد تا یک محیط برنامه را به چندین سرویس ایزوله تقسیم کنند.

برای برنامه‌هایی که به چندین سرویس نیاز دارند، هماهنگ کردن همه کانتینرها برای راه‌اندازی، برقراری ارتباط و خاموش شدن با هم می‌تواند دشوار شود.

Docker Compose ابزاری است که به شما این را امکان می‌دهد که محیط‌های کاربردی چند کانتینری را بر اساس تعاریف تنظیم‌شده در یک فایل YAML اجرا کنید.

از تعاریف سرویس برای ساخت محیط های کاملاً قابل تنظیم با کانتینرهای متعدد استفاده می کند که می توانند شبکه ها و حجم داده ها را به اشتراک بگذارند.

در این راهنما، نحوه نصب Docker Compose بر روی سرور اوبونتو 20.04 و نحوه شروع استفاده از این ابزار را نشان خواهیم داد.

پیش نیازهای نصب Docker Compose

برای دنبال کردن این مقاله، شما نیاز دارید به:

  • یک سرور دارای سیستم عامل اوبونتو 20.04 که با پیروی از مقاله تنظیمات اولیه سرور اوبونتو 20.04 تنظیمات اولیه سرور Ubuntu 20.04 پیکربندی شده باشد.
  • یک کاربر غیر از روت به همراه دسترسی sudo و یک فایروال راه اندازی شده
  • داکر بر روی سیستم شما نصب شده باشد.(برای این کار می توانید از مقاله نصب داکر در اوبونتو کمک بگیرید)

نصب Docker Compose

مرحله 1 – نصب داکر کامپوز

برای اطمینان از دریافت به روزترین نسخه پایدار Docker Compose، این نرم افزار را از مخزن رسمی Github آن دانلود خواهیم کرد .

ابتدا، آخرین نسخه موجود را در صفحه انتشار آن بررسی کنید. در زمان نگارش این مقاله، جدیدترین نسخه پایدار 2.2.3 است .

برای دانلود از دستور زیر استفاده کنید:

mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

در مرحله بعد، مجوزهای صحیح را تنظیم کنید تا دستور  docker compose قابل اجرا باشد:

chmod +x ~/.docker/cli-plugins/docker-compose 
sudo chown $USER /var/run/docker.sock

برای بررسی موفقیت آمیز بودن نصب، می توانید این دستور را اجرا کنید:

docker compose version

خروجی مشابه این را خواهید دید:

Output
Docker Compose version v2.2.3

Docker Compose اکنون با موفقیت روی سیستم شما نصب شده است.

در بخش بعدی نحوه راه اندازی یک فایل docker-compose.yml و راه اندازی یک محیط کانتینری با این ابزار را خواهید دید.

مرحله 2 – تنظیم یک فایل docker-compose.yml

برای نشان دادن نحوه تنظیم یک فایل docker-compose.yml و کار با Docker Compose، با استفاده از ایمیج رسمی Nginx از مخزن Docker Hub، یک محیط وب سرور ایجاد خواهیم کرد .

این محیط کانتینری شده یک فایل HTML ثابت را ارائه می دهد.

با ایجاد یک پوشه جدید در دایرکتوری اصلی خود شروع کنید و سپس وارد آن شوید:

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

مطالب زیر را در فایل docker-compose.yml خود قرار دهید:

version: ‘3.7’
services:
web:
image: nginx:alpine
ports:
– “8000:80”
volumes:
– ./app:/usr/share/nginx/html

فایل docker-compose.yml معمولاً با تعاریف شروع می شود .

version به Docker Compose می گوید که از کدام نسخه پیکربندی استفاده می کنید.

services بیانگر  جایی است که خدماتی را که بخشی از این محیط هستند راه اندازی می کنید.

در مورد شما، شما یک سرویس واحد به نام web دارید .

این سرویس از ایمیج  nginx:alpine استفاده می کند و یک تغییر مسیر پورت را با دستورالعمل ports  تنظیم می کند.

تمام درخواست‌های مربوط به پورت 8000 ماشین میزبان (سیستمی که در آن Docker Compose را اجرا می‌کنید) به کانتینر web در پورت 80 هدایت می‌شوند ، جایی که Nginx در آن اجرا می‌شود.

دستورالعمل volumes یک حجم مشترک بین ماشین میزبان و کانتینر ایجاد می کند.

پوشه app محلی را با کانتینر به اشتراک می گذارد و حجم در usr/share/nginx/html/ داخل کانتینر قرار می گیرد، که سپس ریشه پیش فرض سند برای Nginx را بازنویسی می کند.

آن ذخیره کنید و فایل را ببندید.

شما یک صفحه نمایشی و یک فایل docker-compose.yml برای ایجاد یک محیط وب سرور کانتینری تنظیم کرده اید که به آن سرویس می دهد.

در مرحله بعد، این محیط را با Docker Compose بالا می آورید.

مرحله 3 – اجرای Docker Compose

با وجود فایل  docker-compose.yml ، اکنون می توانید Docker Compose را برای بالا بردن محیط خود اجرا کنید.

دستور زیر ایمیج های Docker لازم را دانلود می کند، یک کانتینر برای سرویس web ایجاد می کند و محیط کانتینری را در حالت پس زمینه اجرا می کند:

docker compose up -d

Docker Compose ابتدا ایمیج تعریف شده را در سیستم محلی شما جستجو می کند و اگر نتواند ایمیج را پیدا کند، ایمیج را از داکر هاب دانلود می کند.

خروجی را مانند زیر خواهید دید:

Output
Creating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 ... done

محیط شما اکنون در پس‌زمینه فعال است. برای بررسی فعال بودن کانتینر، می‌توانید موارد زیر را اجرا کنید:

docker compose ps

این دستور اطلاعاتی در مورد کانتینرهای در حال اجرا و وضعیت آنها و همچنین هرگونه تغییر مسیر پورت را در حال حاضر به شما نشان می دهد:

Output
Name                                            Command                                              State                                            Ports 
--------------------------------------------------------------------------------------------------------------------------------------------
compose-demo_web_1                 /docker-entrypoint.sh ngin ...                      Up                                 0.0.0.0:8000->80/tcp

 

اکنون می‌توانید با رفتن به مرورگر خود به برنامه آزمایشی  که ایجاد کردیم دسترسی داشته باشید.

اگر این نسخه آزمایشی را در سیستم محلی خودتان ایجاد کرده اید برای دیدن پیشنمایش آدرس localhost:8000 را وارد کنید.

اگر این نسخه آزمایشی را در یک سرور اجرا می کنید باید آدرس آیپی عمومی سرور خود را مانند your_server_domain_or_IP:8000  این وارد کنید.

صفحه ای مانند این را خواهید دید:

نصب داکر کامپوز

 

میزان حجم مشترکی که در فایل docker-compose.yml تنظیم کرده اید، فایل های پوشه شما را با ریشه سند کانتینر همگام نگه می دارد

اگر تغییری در فایل index.html ایجاد کنید، به‌طور خودکار توسط کانتینر app دریافت می‌شود و در نتیجه هنگام بارگیری مجدد صفحه در مرورگر شما منعکس می‌شود.

در مرحله بعد، نحوه مدیریت محیط کانتینری خود را با دستورات Docker Compose خواهید دید.

مرحله 4 – آشنایی با دستورات Docker Compose

شما نحوه تنظیم یک فایل docker-compose.yml و ایجاد محیط خود را با docker-compose up انجام دادید.

اکنون خواهید دید که چگونه از دستورات Docker Compose برای مدیریت و تعامل با محیط کانتینری خود استفاده کنید.

برای بررسی گزارش های تولید شده توسط کانتینر Nginx خود، می توانید از دستور logs استفاده کنید:

docker compose logs

خروجی مشابه این را خواهید دید:

Output
Attaching to compose-demo_web_1
web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up
web_1 | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

اگر می خواهید اجرای محیط را بدون تغییر وضعیت فعلی کانتینرها متوقف کنید، می توانید از موارد زیر استفاده کنید:

docker compose pause
Output
Pausing compose-demo_web_1 ... done

برای از سرگیری اجرا پس از صدور مکث می توانید از این دستور کمک بگیرید:

docker compose unpause
Output
Unpausing compose-demo_web_1 ... done

این فرمان stop اجرای کانتینر را خاتمه می دهد، اما هیچ داده ای را که با کانتینرهای شما مرتبط است از بین نمی برد:

docker compose stop
Output
Stopping compose-demo_web_1 ... done

اگر می خواهید کانتینرها، شبکه ها و حجم های مرتبط با این محیط کانتینری را حذف کنید، از دستور down استفاده کنید:

docker compose down
Output
Removing compose-demo_web_1 ... done
Removing network compose-demo_default

توجه داشته باشید که با این کار ایمیج پایه استفاده شده توسط Docker Compose (در مورد شما، nginx:alpine)  را حذف نمی شود.

به این ترتیب، هر زمان که محیط خود را دوباره با یک دستور docker compose up ایجاد می کنید، روند بسیار سریعتر خواهد بود زیرا ایمیج از قبل روی سیستم شما قرار دارد.

در صورتی که می خواهید ایمیج پایه را نیز از سیستم خود حذف کنید، می توانید از موارد زیر استفاده کنید:

docker image rm nginx:alpine
Output
Untagged: 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 برای آشنایی دقیق تر در مورد دستورات Docker مراجعه کنید.

 

نتیجه

در این راهنما، نحوه نصب Docker Compose و راه اندازی یک محیط کانتینری بر اساس ایمیج وب سرور  Nginx را مشاهده کرده اید.

همچنین نحوه مدیریت این محیط را با استفاده از دستورات Compose مشاهده کرده اید.

برای آشنایی کامل با همه دستورات docker compose موجود، اسناد رسمی آن را بررسی کنید.

 

 

 

 

 

نیاز به راهنمایی بیشتر دارید؟
عجله دارید؟ 02156218439
رایگان آموزش ببین - آموزش کار با سرویس های هایو
آموزش های ویژه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

درخواست مشاوره رایگان
عجله دارید؟ ۰۲۱۵۶۲۱۸۴۳۹
درخواست انتقال رایگان
عجله دارید؟ ۰۲۱۵۶۲۱۸۴۳۹