Како да инсталирате и користите Docker Compose на Rocky Linux 9
Вовед
Docker го поедноставува процесот на управување со процесите на апликација во контејнерите. Додека контејнерите се слични на виртуелните машини на одредени начини, тие се полесни и попогодни за ресурсите. Ова им овозможува на програмерите да ја разложат околината на апликацијата на повеќе изолирани услуги.
За апликации кои зависат од неколку услуги, оркестрирањето на сите контејнери за да се стартуваат, да комуницираат и да се исклучуваат заедно може брзо да стане незгодно. Docker Compose е алатка која ви овозможува да извршувате околини за апликации со повеќе контејнери врз основа на дефиниции поставени во датотека YAML. Користи дефиниции за услуги за да изгради целосно приспособливи околини со повеќе контејнери што можат да споделуваат мрежи и волумени на податоци.
Во ова упатство, ќе покажете како да инсталирате Docker Compose на серверот Rocky Linux 9 и како да започнете со користење на оваа алатка.
Предуслови
За да го следите овој напис, ќе ви требаат:
- Пристап до локална машина на Rocky Linux 9 или сервер за развој како корисник без корен со sudo привилегии. Ако користите далечински сервер, препорачливо е да имате инсталирано активен заштитен ѕид. За да ги поставите овие, ве молиме погледнете го нашиот првичен водич за поставување сервер за Rocky Linux 9.
- Docker е инсталиран на вашиот сервер или локална машина, следејќи ги Чекорите 1 и 2 од Како да го инсталирате и користите Docker на Rocky Linux 9.
Чекор 1 - Инсталирање на Docker Compose
За да се уверите дека ја добивате најобновената стабилна верзија на Docker Compose, ќе го преземете овој софтвер од официјалното складиште на Docker.
Прво, да ја ажурираме базата на податоци за пакетите:
- sudo dnf check-update
Следно, додајте го официјалното складиште на Docker ако не сте го сториле тоа за време на инсталирањето на Docker:
- sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Иако не постои специфично складиште за Rocky Linux од Docker, Rocky Linux се базира на CentOS и може да го користи истото складиште. Сега можете да инсталирате Docker Compose, што е приклучок за Docker:
- sudo dnf install docker-compose-plugin
За да потврдите дека инсталацијата е успешна, можете да извршите:
- docker compose version
Ќе видите излез сличен на овој:
OutputDocker Compose version v2.10.2
Docker Compose сега е успешно инсталиран на вашиот систем. Во следниот дел, ќе видите како да поставите датотека docker-compose.yml
и да поставите контејнеризирана околина и да работи со оваа алатка.
Чекор 2 - Поставување датотека docker-compose.yml
За да покажете како да поставите датотека docker-compose.yml
и да работите со Docker Compose, ќе создадете околина на веб-серверот користејќи го официјалниот Docker Hub, јавниот регистар на Docker. Оваа контејнеризирана средина ќе служи една статична HTML-датотека.
Започнете со создавање нов директориум во вашата домашна папка, а потоа префрлете се во него:
- mkdir ~/compose-demo
- cd ~/compose-demo
Во овој директориум, поставете папка со апликации за да служи како корен на документот за вашата 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
обично започнува со дефиницијата верзија
. Ова ќе му каже на Docker Compose која конфигурациска верзија ја користите.
Потоа го имате блокот услуги
, каде што ги поставувате услугите што се дел од оваа средина. Во вашиот случај, имате единствена услуга наречена веб
. Оваа услуга ја користи сликата 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 прво ќе ја побара дефинираната слика на вашиот локален систем и ако не може да ја лоцира сликата, ќе ја преземе сликата од Docker Hub. Ќе го видите излезот вака:
OutputCreating 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, тоа значи дека сте го прескокнале чекорот 2 од Како да го инсталирате и користите Docker на Rocky Linux 9. Ако се вратите назад и ќе го завршите тој чекор, ќе им овозможите на дозволите да работат docker команди без sudo
.
Вашата околина сега работи и работи во заднина. За да потврдите дека контејнерот е активен, можете да извршите:
- 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
ги одржува датотеките на папката app
во синхронизација со коренот на документот на контејнерот. Ако направите какви било промени во датотеката index.html
, тие автоматски ќе бидат подигнати од контејнерот и на тој начин ќе се рефлектираат на вашиот прелистувач кога повторно ќе ја вчитате страницата.
Во следниот чекор, ќе видите како да управувате со вашата контејнеризирана околина со командите на Docker Compose.
Чекор 4 - Запознавање со командите на Docker Compose
Видовте како да поставите датотека docker-compose.yml
и да ја подигнете вашата околина со docker compose up
. Сега ќе видите како да ги користите командите на Docker Compose за да управувате и да комуницирате со вашата контејнеризирана околина.
За да ги проверите дневниците произведени од вашиот Nginx контејнер, можете да ја користите командата logs
:
- docker compose logs
Ќе видите излез сличен на овој:
OutputAttaching 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
OutputPausing compose-demo_web_1 ... done
За да продолжите со извршувањето по издавање пауза:
- docker compose unpause
OutputUnpausing compose-demo_web_1 ... done
Командата stop
ќе го прекине извршувањето на контејнерот, но нема да уништи никакви податоци поврзани со вашите контејнери:
- docker compose stop
OutputStopping compose-demo_web_1 ... done
Ако сакате да ги отстраните контејнерите, мрежите и волумените поврзани со оваа контејнеризирана средина, користете ја командата долу
:
- docker compose down
OutputRemoving compose-demo_web_1 ... done
Removing network compose-demo_default
Забележете дека ова нема да ја отстрани основната слика што ја користи Docker Compose за вртење на вашата околина (во вашиот случај, nginx:alpine
). На овој начин, секогаш кога повторно ќе ја отворите вашата околина со docker compose up
, процесот ќе биде многу побрз бидејќи сликата е веќе на вашиот систем.
Во случај да сакате да ја отстраните основната слика од вашиот систем, можете да користите:
- 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 за подетална референца за командите на Docker.
Заклучок
Во ова упатство, видовте како да инсталирате Docker Compose и да поставите контејнеризирана околина базирана на слика на веб-серверот Nginx. Сте виделе и како да управувате со оваа средина користејќи команди Compose.
За целосно упатување на сите достапни команди docker compose
, проверете ја официјалната документација.