Как Использовать 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

-10%

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

15.95

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

-12.8%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
1 TB
wKVM-SSD 1024 Metered Windows

17

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

-5%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 1024 Windows

12.1

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

-9.3%

CPU
CPU
6 Epyc Cores
RAM
RAM
16 GB
Space
Space
150 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 16384 Windows

54.49

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

-9.7%

CPU
CPU
10 Epyc Cores
RAM
RAM
64 GB
Space
Space
300 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 65536 Windows

139.49

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

-10%

CPU
CPU
10 Epyc Cores
RAM
RAM
64GB
Space
Space
400 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 65536
OS
CentOS
Software
Software
Keitaro

149.04

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

-10%

CPU
CPU
8 Epyc Cores
RAM
RAM
32 GB
Space
Space
200 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 32768
OS
CentOS
Software
Software
Keitaro

77.54

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

-16.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
60 Mbps
DDoS Protected SSD-KVM 4096 Linux

67

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

-21.5%

CPU
CPU
2 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 4096 HK Windows

40

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

-15.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
80 Mbps
DDoS Protected SSD-KVM 8192 Linux

95

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

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

cookie

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

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