مقدمه
Docker ابزاری عالی برای خودکار سازی برنامه های کاربردی لینوکس در کانتینرهای نرم افزاری است ، اما برای بهره گیری کامل از پتانسیل آن ، هر یک از اجزای برنامه باید در کانتینر شخصی خود اجرا شود. برای برنامه های کاربردی پیچیده با اجزای فراوان ، که همه کانتینرها را با هم برای راه اندازی ، برقراری ارتباط و خاموش کردن به کار میگیرند ، خیلی سریع می توانند ناخوشایند شوند.
انجمن Docker با یک راه حل محبوب به نام Fig روبرو شد که به شما این امکان را می دهد تا از یک فایل YAML استفاده کنید تا همه کانتینرها و پیکربندی های Docker خود را بر روی آن تنظیم کنید. این امر چنان محبوب شد که تیم Docker تصمیم گرفت تا Docker Compos را بر اساس منبع Fig بسازد ، که اکنون مستهلک شده است. Docker Compose به کاربران این امکان را می دهد تا فرآیندهای کانتینرهای داکر را از جمله راه اندازی ، خاموش کردن و تنظیم لینک ها و والیوم های داخل کانتینری را هماهنگ کنند.
در این آموزش ، آخرین نسخه Docker Compose را برای کمک به شما در مدیریت برنامه های چند کانتینری روی یک سرور مجازی Debian 10 نصب خواهید کرد.
پیش نیازها
برای دنبال کردن این مقاله ، به این موارد نیاز دارید:
یک سرور مجازی Debian 10 و یک کاربر غیر root با امتیازات sudo . این لینک در مورد تنظیم اولیه سرور مجازی با آموزش Debian 10 نحوه انجام این دستورالعمل های مرحله 1 و مرحله 2 نحوه نصب و استفاده از Docker در Debian 10 نصب شده است
توجه: اگرچه پیش نیازها دستورالعمل نصب Docker در Debian 10 را ارائه می دهند ، دستورات docker در این مقاله باید بعد از نصب Docker روی سیستم عامل های دیگر کار کنند.
مرحله 1 – نصب Docker Compose
اگرچه می توانید Docker Compose را از منابع رسمی Debian نصب کنید ، اما نسخه های متعدد فرعی بعد از آخرین نسخه موجود است ، بنابراین در این آموزش آن را از منبع Docker’s GitHub نصب خواهید کرد. دستورالعمل کمی متفاوت از آنچه در صفحه نسخه ها خواهید یافت ، میباشد. این دستور با استفاده از فلگ -o برای مشخص کردن فایل خروجی به جای تغییر مسیر خروجی ، از وارد شدن به خطای ” permission denied ” ناشی از استفاده از sudo جلوگیری می کند.
نسخه فعلی را بررسی کنید و در صورت لزوم آن را در دستور زیر به روز کنید:
$ sudo curl -L https://github.com/docker/compose
/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
سپس مجوزها را تنظیم خواهیم کرد:
$ sudo chmod +x /usr/local/bin/docker-compose
سپس با بررسی نسخه تأیید خواهیم کرد که نصب با موفقیت انجام شد:
$ docker-compose –version
با این کار نسخه ای که نصب کردیم چاپ خواهد شد:
Output
docker-compose version 1.25.3, build d4d1b42b
اکنون که Docker Compose نصب شده است ، ما آماده اجرای یک مثال ” Hello World ” هستیم.
مرحله 2 – اجرای یک کانتینر با Docker Compose
رجیستری داکر عمومی ، Docker Hub ، شامل تصویر Hello World برای نمایش و آزمایش است. این حداقل تنظیمات مورد نیاز برای اجرای یک کانتینر را با استفاده از Docker Compose نشان می دهد: یک فایل YAML که یک تصویر واحد را فراخوانی می کند. ما این تنظیمات حداقل را برای اجرای کانتینرهای hello-world ایجاد خواهیم کرد.
ابتدا دایرکتوری برای فایل YAML ایجاد کنید و به آن سوییچ کنید:
$ mkdir hello-world
$ cd hello-world
سپس فایل YAML را ایجاد کنید:
$ nano docker-compose.yml
مطالب زیر را در فایل قرار داده ، فایل را ذخیره کرده و از ویرایشگر متن خارج شوید:
docker-compose.yml
my-test:
image: hello-world
خط اول در فایل YAML به عنوان بخشی از نام کانتینر استفاده می شود. خط دوم مشخص می کند از کدام تصویر برای ایجاد کانتینر استفاده کنید. هنگامی که ما دستور docker-compose up را اجرا می کنیم ، به دنبال یک تصویر محلی با نامی که مشخص کردیم ، یعنی hello-world هستیم. با این جایگزینی ، فایل را ذخیره کرده و خارج می شویم.
با فرمان docker images می توانید به صورت دستی به تصاویر موجود در سیستم ما نگاه کنید:
$ docker images
هنگامی که هیچ تصاویر محلی وجود ندارد ، فقط عناوین ستون نمایش داده می شود:
Output
REPOSITORY TAG IMAGE ID CREATED SIZE
اکنون ، اگر هنوز در فهرست ~ / hello-world هستید ، دستور زیر را اجرا کنید:
$ docker-compose up
اولین باری که دستور را اجرا می کنید ، اگر هیچ تصویری محلی به نام hello-world وجود ندارد ، Docker Compose آن را از منبع عمومی Docker Hub بیرون می کشد:
Output
Pulling my-test (hello-world:)…
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299
cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest
. . .
پس از کشیدن تصویر ، docker-compose یک کانتینر ایجاد می کند ، ضمیمه می کند و برنامه hello را اجرا می کند ، که به نوبه خود تأیید می کند که نصب در حال کار است:
Output
. . .
Creating helloworld_my-test_1…
Attaching to helloworld_my-test_1
my-test_1 |
my-test_1 | Hello from Docker.
my-test_1 | This message shows that your installation appears to be working correctly.
my-test_1 |
. . .
سپس توضیحی درباره آنچه انجام داده چاپ می کند:
Output
To generate this message, Docker took the following steps:
my-test_1 | 1. The Docker client contacted the Docker daemon.
my-test_1 | 2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
my-test_1 | (amd64)
my-test_1 | 3. The Docker daemon created a new container from that image which runs the
my-test_1 | executable that produces the output you are currently reading.
my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it
my-test_1 | to your terminal.
کانتینرهای داکر فقط تا زمانی که دستور فعال است اجرا می شوند ، بنابراین پس از پایان کار hello ، کانتینر متوقف شد. در نتیجه ، هنگامی که به فرآیندهای فعال نگاه می کنیم ، سرصفحات ستون ظاهر می شود ، اما کانتینرهای hello world لیست نمی شود زیرا در حال اجرا نیست:
$ docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
با استفاده از فلگ -a می توانید اطلاعات کانتینر را که در مرحله بعدی به آن نیاز دارید را مشاهده کنید. این همه کانتینرها را نشان می دهد، و نه فقط موارد فعال:
$ docker ps -a
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06069fd5ca23 hello-world “/hello” 35 minutes ago Exited (0) 35 minutes ago hello-world_my-test_1
این خروجی اطلاعاتی را نشان می دهد که باید پس از اتمام کار با کانتینر از آن حذف کنید.
مرحله 3 – حذف تصویر (اختیاری)
برای جلوگیری از استفاده غیر ضروری از فضا دیسک ، تصویر محلی را حذف خواهیم کرد. برای انجام این کار ، ما باید تمام کانتینرهای حاوی تصویر را با استفاده از دستور docker rm حذف کنیم ، به دنبال آن یا CONTAINER ID یا NAME حذف می شود. در مثال زیر ، ما از دستور docker ps -a که اخیراً اجرا کردیم، استفاده می کنیم. حتماً شناسه کانتینر خود را جایگزین کنید:
$ docker rm 06069fd5ca23
پس از حذف همه کانتینرهای حاوی تصویر ، می توانیم تصویر را حذف کنیم:
$ docker rmi hello-world
نتیجه
شما Docker Compose را روی Debian 10 نصب کرده اید، نصب خود را با اجرای یک مثال Hello World آزمایش کرده و تصویر و کانتینر مورد آزمایش را حذف کرده اید.
در حالی که مثال Hello World نصب شما را تأیید کرد ، این پیکربندی ساده یکی از مزایای اصلی Docker Compose را نشان نمی دهد – آن هم توانایی بالا و پایین آوردن گروهی از کانتینرهای Docker به صورت همزمان. برای دیدن نحوه استفاده از Docker Compose با جزئیات بیشتر ، به نحوه نصب وردپرس با Docker Compose نگاهی بیندازید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04 – نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04
نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 – نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7
نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP – بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose
مراحل ایمن سازی Apache HTTP در FreeBSD 12 – بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16
درک Objectهای Map و Set در JavaScript – استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18
نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو – چگونه می توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04
نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8 – چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی
نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js – نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18
راه اندازی اولیه سرور با CentOS 8 – تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes
نحوه تنظیم کلیدهای SSH در CentOS 8 – نحوه نصب و استفاده از PostgreSQL در CentOS 7
نحوه ساختن یک برنامه Node.js با Docker Quickstart – چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو
چگونه می توان هاست های مجازی Apache را در اوبونتو – مدیریت DNS با استفاده از DNSControl در Debian 10
نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 – چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7
نحوه نصب و استفاده از TimescaleDB در CentOS 7 – نحوه نصب Apache Kafka در Debian 10
نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04– نحوه نصب وردپرس با OpenLiteSpeed در اوبونتو 18.04
استفاده از Cron برای خودکارسازی کارها در اوبونتو 18 –
نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18 –
نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10 –
نحوه نصب Docker Compose در Debian 10 –
چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد –
کلمات کلیدی خرید سرور
خرید 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/