Как Использовать Docker Compose для Приложений с Несколькими Контейнерами
10:34, 21.05.2026
1. Инструменты для управления многоконтейнерными приложениями
Современные приложения редко работают на одном сервисе или в одном контейнере. Вместо этого они часто опираются на несколько взаимосвязанных сервисов, таких как веб-серверы, базы данных и кэши. Управление этими компонентами вручную может быть утомительным и подверженным ошибкам. К счастью, такие инструменты, как Docker Compose, упрощают процесс определения, развертывания и управления многоконтейнерными приложениями.
В этой статье мы рассмотрим несколько инструментов для управления многоконтейнерными средами, пройдемся по этапам создания и развертывания проекта с помощью Docker Compose, а также обсудим лучшие практики эффективного управления вашими сервисами.
1.1 Обзор Podman
Podman, или Pod Manager Tool, — это контейнерный движок с открытым исходным кодом, разработанный как прямая замена Docker. Он предлагает интерфейс командной строки для управления контейнерами.
Podman не требует демона для работы и совместим с systemd, что позволяет управлять контейнерами через модули systemd (и запускать systemd внутри контейнеров).
Он помогает пользователю организовывать контейнеры в под, которые используют одну сеть и ресурсы.
1.1.1 Как установить Podman
Чтобы установить Podman на системе на базе Linux:
sudo apt update sudo apt install -y podman
Для macOS и Windows вы можете воспользоваться установщиком Podman Desktop, доступным на официальном веб-сайте.
1.2 Введение в podman-docker
podman-docker — это уровень совместимости, позволяющий использовать команды Docker CLI с Podman. Это особенно полезно, если вы переходите с Docker или работаете с инструментами, ожидающими команд Docker.
1.2.1 Установка podman-docker
Установите podman-docker , чтобы включить совместимость команд Docker:
sudo apt install -y podman-docker
После установки такие команды, как docker run, docker build, или docker-compose , будут интерпретироваться Podman.
1.3 Обзор docker-compose
Docker Compose — это инструмент для запуска многоконтейнерных приложений Docker с помощью простого конфигурационного файла YAML. Он позволяет описать все ваши службы, сети и тома в одном файле и управлять ими вместе. Docker Compose поддерживает несколько изолированных сред на одном хосте и переключение между ними. Это означает, что с помощью этого инструмента вы можете воспроизводить контейнеры, в которые были внесены изменения, не изменяя само многоконтейнерное приложение.
1.3.1 Как установить docker-compose
Вы можете установить Docker Compose с помощью официального плагина Docker CLI:
sudo apt update sudo apt install docker-compose-plugin
Или для автономной установки (устарело в пользу плагина):
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-
compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Проверка установки:
docker compose version
Создание многоконтейнерного приложения
Давайте создадим простое веб-приложение, состоящее из веб-сервера (Nginx), бэкенда (Flask) и базы данных (PostgreSQL).
2.1 Написание файла compose.yml
Файл compose.yml (ранее docker-compose.yml) содержит все определения служб.
2.1.1 Определение служб
Каждая служба представляет собой контейнер. Вы можете указать образ, контекст сборки, порты, тома и переменные среды.
2.1.2 Настройка сетей
Compose позволяет создавать собственные сети, чтобы контейнеры могли взаимодействовать между собой, используя имена своих служб.
2.1.3 Пример файла compose.yml
version: "3.9"
services:
web:
build: ./web
ports:
- "80:80"
depends on:
- backend
backend: build: ./backend
environment:
- DATABASE_URL=postgres://user:password@db:5432/mydb
depends_on:
- db
db:
image: postgres:15
restart: always
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
В этой конфигурации:
- web — это фронтенд, обслуживаемый Nginx.
- backend — это сервер API на базе Flask.
- db — это контейнер PostgreSQL с постоянным хранилищем.
2.2 Развертывание многоконтейнерных приложений
Как только ваш файл compose.yml будет готов, разверните приложение с помощью:
docker compose up --build
Эта команда создает образы (если необходимо) и запускает все службы. Вы можете остановить приложение с помощью:
docker compose down
Чтобы запустить службы в фоновом режиме:
docker compose up -d
Управление многоконтейнерным приложением
Docker Compose также упрощает управление вашими службами. Возможности:
- Масштабирование сервисов:
docker compose up -d --scale backend=3
Это запускает три экземпляра бэкенд-сервиса (полезно для балансировки нагрузки).
- Просмотр журналов:
docker compose logs -f
- Проверка состояния сервиса:
docker compose ps
- Перекомпиляция образов:
docker compose build
- Выполнение одноразовых команд:
docker compose exec backend flask db upgrade
Docker Compose позволяет управлять жизненным циклом вашего приложения предсказуемым и повторяемым образом.
С Docker Compose управление многоконтейнерными приложениями становится гораздо проще, особенно в случаях, когда вы имеете дело со средами, требующими последовательной настройки и демонтажа. Независимо от того, занимаетесь ли вы локальной разработкой или готовитесь к запуску в производственную среду, Compose позволяет вам определить всю архитектуру вашего приложения в одном файле и держать все под контролем.
Юридическая информация
Docker является торговой маркой компании Docker, Inc. Podman — это проект с открытым исходным кодом, поддерживаемый компанией Red Hat и другими организациями. Все упомянутое программное обеспечение подпадает под действие соответствующих лицензий с открытым исходным кодом.
При развертывании приложений в производственных средах убедитесь, что вы соблюдаете лицензионные требования в отношении всех образов и зависимостей, которые вы используете.