Како да инсталирате и користите 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.

Прво, да ја ажурираме базата на податоци за пакетите:

  1. sudo dnf check-update

Следно, додајте го официјалното складиште на Docker ако не сте го сториле тоа за време на инсталирањето на Docker:

  1. sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Иако не постои специфично складиште за Rocky Linux од Docker, Rocky Linux се базира на CentOS и може да го користи истото складиште. Сега можете да инсталирате Docker Compose, што е приклучок за Docker:

  1. sudo dnf install docker-compose-plugin

За да потврдите дека инсталацијата е успешна, можете да извршите:

  1. docker compose version

Ќе видите излез сличен на овој:

Output
Docker Compose version v2.10.2

Docker Compose сега е успешно инсталиран на вашиот систем. Во следниот дел, ќе видите како да поставите датотека docker-compose.yml и да поставите контејнеризирана околина и да работи со оваа алатка.

Чекор 2 - Поставување датотека docker-compose.yml

За да покажете како да поставите датотека docker-compose.yml и да работите со Docker Compose, ќе создадете околина на веб-серверот користејќи го официјалниот Docker Hub, јавниот регистар на Docker. Оваа контејнеризирана средина ќе служи една статична HTML-датотека.

Започнете со создавање нов директориум во вашата домашна папка, а потоа префрлете се во него:

  1. mkdir ~/compose-demo
  2. cd ~/compose-demo

Во овој директориум, поставете папка со апликации за да служи како корен на документот за вашата Nginx околина:

  1. mkdir app

Користејќи го претпочитаниот уредувач на текст, креирајте нова датотека index.html во папката app:

  1. 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:

  1. 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 и ќе ја изврши контејнеризираната околина во режим на позадина:

  1. 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:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 ... done

Забелешка: Ако наидете на грешка во дозволата во врска со приклучокот Docker, тоа значи дека сте го прескокнале чекорот 2 од Како да го инсталирате и користите Docker на Rocky Linux 9. Ако се вратите назад и ќе го завршите тој чекор, ќе им овозможите на дозволите да работат docker команди без sudo.

Вашата околина сега работи и работи во заднина. За да потврдите дека контејнерот е активен, можете да извршите:

  1. 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:

  1. 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" "-"

Ако сакате да го паузирате извршувањето на околината без да ја промените моменталната состојба на вашите контејнери, можете да користите:

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

За да продолжите со извршувањето по издавање пауза:

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

Командата stop ќе го прекине извршувањето на контејнерот, но нема да уништи никакви податоци поврзани со вашите контејнери:

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

Ако сакате да ги отстраните контејнерите, мрежите и волумените поврзани со оваа контејнеризирана средина, користете ја командата долу:

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

Забележете дека ова нема да ја отстрани основната слика што ја користи Docker Compose за вртење на вашата околина (во вашиот случај, nginx:alpine). На овој начин, секогаш кога повторно ќе ја отворите вашата околина со docker compose up, процесот ќе биде многу побрз бидејќи сликата е веќе на вашиот систем.

Во случај да сакате да ја отстраните основната слика од вашиот систем, можете да користите:

  1. 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, проверете ја официјалната документација.