Як використовувати Docker Compose для багатоконтейнерних додатків

watch 1m, 28s
views 2

10:29, 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
8 Epyc Cores
RAM
RAM
32 GB
Space
Space
200 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 32768 Linux

70.49

При оплаті за рік

-10%

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

28.44

При оплаті за рік

-8.8%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 16384 Windows

45.78

При оплаті за рік

-15.3%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
40 Mbps
DDoS Protected SSD-wKVM 2048 Windows

54

При оплаті за рік

-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

При оплаті за рік

-9.2%

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

72

При оплаті за рік

-8.1%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
200 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 8192 Windows

31.25

При оплаті за рік

-15.6%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
1 TB
KVM-SSD 512 Metered Linux

5.33

При оплаті за рік

-9.6%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
12 TB
wKVM-SSD 32768 Metered Windows

156

При оплаті за рік

-9.5%

CPU
CPU
8 Epyc Cores
RAM
RAM
32 GB
Space
Space
200 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 32768 Windows

74.49

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.