Как Использовать Docker Compose для Приложений с Несколькими Контейнерами

watch 1m, 28s
views 2

10:34, 21.05.2026

Содержание статьи
arrow

  • 1. Инструменты для управления многоконтейнерными приложениями
  • 1.1 Обзор Podman
  • 1.1.1 Как установить Podman
  • 1.2 Введение в podman-docker
  • 1.2.1 Установка podman-docker
  • 1.3 Обзор docker-compose
  • 1.3.1 Как установить docker-compose
  • Создание многоконтейнерного приложения
  • 2.1 Написание файла compose.yml
  • 2.1.1 Определение служб
  • 2.1.2 Настройка сетей
  • 2.1.3 Пример файла compose.yml
  • 2.2 Развертывание многоконтейнерных приложений
  • Юридическая информация

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 и другими организациями. Все упомянутое программное обеспечение подпадает под действие соответствующих лицензий с открытым исходным кодом.

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

Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

-15.6%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
30 Mbps
DDoS Protected SSD-KVM 1024 Linux

$ 44.08

$

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 4096 Linux

$ 17.4

$

При оплате за год

-9.5%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 32768 Windows

$ 85.83

$

При оплате за год

-21.4%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
500 GB
wKVM-SSD 8192 HK Windows

$ 77.72

$

При оплате за год

-10.2%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
100 Mbps
DDoS Protected SSD-KVM 16384 Linux

$ 142.68

$

При оплате за 6 месяцев

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 16384 Linux

$ 58

$

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
MT5 KVM 4096 Windows

$ 23.19

$

При оплате за год

-24.7%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
4 TB
KVM-SSD 4096 Metered Linux

$ 35.96

$

При оплате за год

-10%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
20 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 2048 Linux

$ 10.21

$

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 4096 Windows

$ 21.63

$

При оплате за год

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.