Поиск по сайту:

Как установить и использовать Docker Compose в Rocky Linux 8


Введение

Docker упрощает процесс управления процессами приложений в контейнерах. Хотя контейнеры в некотором роде похожи на виртуальные машины, они более легкие и ресурсоемкие. Это позволяет разработчикам разбить среду приложения на несколько изолированных служб.

Для приложений, зависящих от нескольких служб, координация всех контейнеров для одновременного запуска, связи и закрытия может быстро стать громоздкой. Docker Compose — это инструмент, который позволяет запускать среды приложений с несколькими контейнерами на основе определений, установленных в файле YAML. Он использует определения служб для создания полностью настраиваемых сред с несколькими контейнерами, которые могут совместно использовать сети и объемы данных.

В этом руководстве вы продемонстрируете, как установить Docker Compose на сервер Rocky Linux 8 и как начать использовать этот инструмент.

Предпосылки

Чтобы следовать этой статье, вам понадобятся:

  • Доступ к локальному компьютеру или серверу разработки Rocky Linux 8 в качестве пользователя без полномочий root с привилегиями sudo. Если вы используете удаленный сервер, рекомендуется установить активный брандмауэр. Чтобы настроить их, обратитесь к нашему Руководству по начальной настройке сервера для Rocky Linux 8.
  • Docker установлен на вашем сервере или локальном компьютере в соответствии с шагами 1 и 2 инструкции «Установка и использование Docker в Rocky Linux 8».

Шаг 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

Хотя у Docker нет специального репозитория Rocky Linux, 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 обычно начинается с определения 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 и запустит контейнерную среду в фоновом режиме:

  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 8». Вернувшись назад и выполнив этот шаг, вы получите разрешения на выполнение команд 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, если вы запускаете эту демонстрацию на своем локальном компьютере, либо ваш_сервер_домен_или_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

Если вы хотите удалить контейнеры, сети и тома, связанные с этой контейнерной средой, используйте команду down:

  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 см. в официальной документации.