نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04
Docker روند مدیریت فرآیندهای برنامه در کانتینرها را ساده می کند. در حالی که کانتینرها از جهات خاصی شبیه به ماشین های مجازی هستند ، اما سبک ترند و با منابع سازگاری دارند. این ویژگی به توسعه دهندگان اجازه می دهد یک محیط برنامه را به چندین سرویس مجزا تقسیم کنند.
برای برنامه های کاربردی وابسته به چندین سرویس ، مرتب کردن همه کانتینرها را برای راه اندازی ، برقراری ارتباط و خاموش کردن آن ها با هم می توانند به سرعت مشکل ساز شود. Docker Compose ابزاری است که به شما امکان می دهد محیط های برنامه چند کانتینری را بر اساس تعاریفی که در یک فایل YAML تعیین شده است ، اجرا کنید. با استفاده از تعاریف سرویس ، محیط های کاملاً قابل تنظیم با چندین کانتینر را ایجاد می کند که می توانند شبکه ها و حجم داده ها را به اشتراک بگذارند.
در این راهنما ، نحوه نصب Docker Compose روی سرور مجازی Ubuntu 20.04 و چگونگی شروع استفاده از این ابزار را نشان خواهیم داد.
پیش نیازها
برای دنبال کردن این مقاله ، به موارد زیر نیاز دارید:
⦁ دسترسی به یک دستگاه محلی یا سرور مجازی توسعه Ubuntu 20.04 به عنوان یک کاربر غیر ریشه و دارای امتیازات sudo. اگر از سرور مجازی راه دور استفاده می کنید ، توصیه می شود یک فایروال فعال نصب شده داشته باشید. برای انجام این کار ، لطفاً به راهنمای راه اندازی اولیه سرور مجازی برای اوبونتو 20.04 مراجعه کنید.
⦁ Docker نصب شده بر روی سرور مجازی یا دستگاه محلی شما ، طبق مراحل 1 و 2 نحوه نصب و استفاده از Docker در اوبونتو 20.04.
مرحله 1 – نصب Docker Compose
برای اطمینان از به روزترین نسخه پایدار Docker Compose ، این نرم افزار را از مخزن رسمی آن Github دانلود خواهیم کرد.
ابتدا آخرین نسخه موجود در صفحه نسخه های آنها را تأیید کنید. در زمان نوشتن این مقاله، جدیدترین نسخه پایدار 1.26.0 است.
دستور زیر نسخه 1.26.0 را دانلود کرده و فایل اجرایی را در / usr / local / bin / docker-compose ذخیره می کند ، که این نرم افزار را در سطح جهانی به صورت docker-compose در دسترس خواهد کرد:
⦁ $ sudo curl -L “https://github.com/docker/compose/releases/
download/1.26.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
⦁
سپس ، مجوزهای صحیح را تنظیم کنید تا دستور docker-compose قابل اجرا باشد:
⦁ $ sudo chmod +x /usr/local/bin/docker-compose
⦁
برای تأیید موفقیت آمیز نصب ، می توانید این دستور را اجرا کنید:
⦁ $ docker-compose –version
⦁
خروجی مشابه این را مشاهده خواهید کرد:
Output
docker-compose version 1.26.0, build 8a1c60f6
Docker Compose اکنون با موفقیت روی سیستم شما نصب شده است. در بخش بعدی خواهیم دید که چگونه می توان فایل docker-compose.yml را تنظیم کرد و با استفاده از این ابزار ، یک محیط کانتینر را تنظیم و اجرا کرد.
مرحله 2 – تنظیم فایل docker-compose.yml
برای نشان دادن نحوه تنظیم فایل docker-compose.yml و کار با Docker Compose ، با استفاده از تصویر رسمی Nginx از Docker Hub ، رجیستری عمومی Docker ، یک محیط وب سرور مجازی ایجاد خواهیم کرد. این محیط حاوی یک فایل HTML ثابت است.
با ایجاد یک دیرکتوری جدید در پوشه هوم خود ، شروع به کار کنید و سپس به داخل آن بروید:
⦁ $ mkdir ~/compose-demo
⦁
⦁ $ cd ~/compose-demo
در این دیرکتوری ، یک پوشه برنامه را تنظیم کنید تا به عنوان ریشه سند برای محیط Nginx شما باشد:
⦁ $ mkdir app
⦁
با استفاده از ویرایشگر متن مورد نظر خود ، یک فایل جدید index.html در پوشه برنامه ایجاد کنید:
⦁ $ nano app/index.html
⦁
محتوای زیر را در این فایل قرار دهید:
~/compose-demo/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 خود قرار دهید:
docker-compose.yml
version: ‘2.0’
services:
web:
image: nginx:alpine
ports:
– “8000:80”
volumes:
– ./app:/usr/share/nginx/html
فایل docker-compose.yml معمولاً با تعریف نسخه شروع می شود. و به Docker Compose می گوید که کدام نسخه پیکربندی مورد استفاده ماست.
پس از آن بلوک services را خواهیم داشت که سرویس ها را تنظیم کرده ایم و بخشی از این محیط هستند. در مورد ما ، یک سرویس واحد به نام web داریم. این سرویس از تصویر nginx: alpine استفاده می کند و با تغییر مسیر یک پورت با دستور ports تنظیمات را انجام می دهد. کلیه درخواستهای پورت 8000 دستگاه هاست (سیستمی که Docker Compose را در آن اجرا می کنید) به پورت 80 ، محل اجرای Nginx به کانتینر وب هدایت می شوید.
دستورالعمل volumes باعث ایجاد یک حجم مشترک بین دستگاه هاست و کانتینر می شود. این پوشه برنامه محلی را با کانتینر به اشتراک می گذارد ، و حجم آن در / usr / share / nginx / html در داخل کانتینر قرار خواهد گرفت ، که سپس ریشه سند پیش فرض را برای Nginx بازنویسی می کند.
فایل را ذخیره کنید و ببندید.
ما یک صفحه نمایشی و یک فایل docker-compose.yml برای ایجاد یک محیط وب سرور مجازی کانتینرایز شده ایجاد کرده ایم که آن را ارائه میدهد. در مرحله بعدی ، این محیط را با Docker Compose همراه خواهیم کرد.
مرحله 3 – اجرای Docker composer
با قرارگیری فایل docker-compose.yml در جای خود، می توانیم Docker Compose را اجرا کنیم تا محیط خود را راه اندازی کنیم. دستور زیر تصاویر لازم Docker را دانلود می کند ، یک کانتینر برای سرویس وب ایجاد می کند و محیط کانتینرایز شده را در حالت پس زمینه اجرا می کند:
⦁ $ docker-compose up -d
⦁
Docker Compose ابتدا تصویر تعریف شده را در سیستم محلی شما جستجو می کند ، و اگر نتواند تصویر را پیدا کند ، تصویر را از Docker Hub دانلود می کند. خروجی مانند این را خواهید دید:
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:57254039c6313fe8c53f1acbf15657
ec9616a813397b74b063e32443427c5502
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 را وارد کنید.
توجه: اگر این نسخه ی نمایشی را روی یک سرور مجازی از راه دور که فایروال UFW فعال دارد اجرا می کنید ، باید به پورت 8000 دسترسی داشته باشید تا بتوانید از طریق مرورگری که روی دستگاه محلی شما اجرا می شود به نسخه ی نمایشی دسترسی پیدا کنید:
صفحه ای را به این شکل مشاهده خواهید کرد:
از آنجا که حجم اشتراکی که شما در فایل docker-compose.yml تنظیم کرده اید ، فایل های پوشه app شما را با ریشه سند کانتینر همگام می کند. اگر تغییری در فایل index.html ایجاد کنید ، آن تغییرات به طور خودکار توسط کانتینر جمع می شوند و به این ترتیب هنگام دانلود مجدد صفحه ، در مرورگر شما منعکس می شود.
در مرحله بعد ، خواهید دید که چگونه محیط کانتینرایز شده خود را با دستورات Docker Compose مدیریت کنید.
مرحله 4 – آشنایی با دستورات Docker Compose
مشاهده کردید که چگونه یک فایل docker-compose.yml تنظیم کنید و محیط خود را با تنظیم docker راه اندازی نمایید. اکنون خواهید دید که چگونه از دستورات 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
اگر می خواهید کانتینرها ، شبکه ها و حجم های مرتبط با این محیط کانتینرایز شده را حذف کنید ، از دستور پایین استفاده کنید:
⦁ $ 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:b89a6ccbda39576ad23fd079978c
967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d5
34d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54
f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd3512
6b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759
ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a5
4c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be9
6dcdad8e36c59a03b7b3b61c946a5741a
توجه: لطفاً برای اطلاعات بیشتر در مورد دستورات Docker ، به راهنمای ما در مورد نحوه نصب و استفاده از Docker مراجعه کنید.
نتیجه
در این راهنما ، ما شاهد نحوه نصب Docker Compose و تنظیم یک محیط کانتینرایز شده بر اساس تصویر سرور مجازی وب Nginx بودیم. همچنین دیدیم که چگونه می توان این محیط را با استفاده از دستورات Compose مدیریت کرد.
برای مطالعه مرجع کامل در مورد کلیه دستورات docker-compose موجود ، مطالب رسمی را بررسی کنید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04
راه اندازی سایت توسعه Jekyll در اوبونتو 20.04
نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04
نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04
نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8
نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04
نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
https://vpsgol.net/product/vps-germany/
https://vpsgol.net/product/vps-usa/
https://vpsgol.net/product/vps-france/
https://vpsgol.net/product/vps-canada/
https://vpsgol.net/product/vps-poland/
https://vpsgol.net/product/vps-netherlands/
https://vpsgol.net/product/vps-england/