Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Как установить Docker Compose в Ubuntu 22.04
- ALEXX
- Администратор
- Сообщения: 1310
- Зарегистрирован: 21 дек 2014, 14:59
- Откуда: Королёв
- Контактная информация:
Как установить Docker Compose в Ubuntu 22.04
Чтобы получить самую последнюю стабильную версию Docker Compose, загрузите это программное обеспечение из официального репозитория Github .
Во-первых, подтвердите последнюю версию, доступную на их странице выпусков . На момент написания этой статьи самой последней стабильной версией является 2.3.3.
Используйте следующую команду для загрузки:
Код: Выделить всё
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
Код: Выделить всё
chmod +x ~/.docker/cli-plugins/docker-compose
Код: Выделить всё
docker compose version
Код: Выделить всё
Output
Docker Compose version v2.3.3
Шаг 2 — Настройка docker-compose.yml файла
Чтобы продемонстрировать, как настроить docker-compose.yml файл и работать с Docker Compose, вы создадите среду веб-сервера, используя официальный образ Nginx из Docker Hub , общедоступного реестра Docker. Эта контейнерная среда будет обслуживать один статический файл HTML.
Начните с создания нового каталога в вашей домашней папке, а затем перейдите в него:
Код: Выделить всё
mkdir ~/compose-demo
Код: Выделить всё
cd ~/compose-demo
Код: Выделить всё
mkdir app
Код: Выделить всё
nano app/index.html
Код: Выделить всё
nano ~/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>
Далее создайте docker-compose.yml файл:
Код: Выделить всё
nano docker-compose.yml
Код: Выделить всё
version: '3.7'
services:
web:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./app:/usr/share/nginx/html
Затем у вас есть 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 службы и запустит контейнерную среду в фоновом режиме:
Код: Выделить всё
docker compose up -d
Код: Выделить всё
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 compose ps
Код: Выделить всё
Output
Name Command State Ports
----------------------------------------------------------------------------------
compose-demo_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp
Вы увидите такую страницу:
Демонстрационная страница Docker Compose
Общий том, который вы настроили в docker-compose.yml файле, поддерживает app синхронизацию файлов вашей папки с корнем документа контейнера. Если вы внесете какие-либо изменения в index.html файл, они будут автоматически подхвачены контейнером и, таким образом, отражены в вашем браузере при перезагрузке страницы.
На следующем шаге вы увидите, как управлять своей контейнерной средой с помощью команд Docker Compose.
Шаг 4 — Знакомство с командами Docker Compose
Вы видели, как настроить docker-compose.yml файл и настроить среду с помощью docker compose up. Теперь вы увидите, как использовать команды 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
Код: Выделить всё
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 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
- ALEXX
- Администратор
- Сообщения: 1310
- Зарегистрирован: 21 дек 2014, 14:59
- Откуда: Королёв
- Контактная информация: