Два обновления с момента оригинальной статьи: (1) CentOS 8 достиг конца жизненного цикла 31 декабря 2021 года — используйте AlmaLinux 9, Rocky Linux 9 или CentOS Stream. (2) Docker Compose v1 (команда docker-compose) устарела. Compose v2 теперь является плагином Docker и запускается как docker compose (с пробелом). Ниже приведены актуальные шаги.

Docker Compose позволяет описывать и запускать многоконтейнерные приложения из одного YAML-файла — одной командой поднимается весь стек (приложение, база данных, кэш) с нужными сетями и томами. Compose теперь встроен в Docker как плагин (v2), поэтому устанавливается вместе с Docker. Ниже — актуальная настройка для AlmaLinux 9, Rocky Linux 9 и CentOS Stream.

Шаг 1: Добавьте репозиторий Docker

sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

Шаг 2: Установите Docker и плагин Compose

Пакет docker-compose-plugin предоставляет Compose v2:

sudo dnf install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

Шаг 3: Запустите Docker и проверьте

sudo systemctl enable --now docker
docker --version
docker compose version

Обратите внимание: команда для v2 — docker compose (с пробелом), а не старая docker-compose. Чтобы запускать Docker без sudo, добавьте своего пользователя в группу docker: sudo usermod -aG docker $USER, затем выйдите и войдите снова.

Шаг 4: Пример docker-compose.yml

Создайте файл с именем docker-compose.yml — вот простой стек WordPress + MySQL:

services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: change_me
      MYSQL_DATABASE: wordpress
    volumes:
      - db_data:/var/lib/mysql
  wordpress:
    image: wordpress:latest
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data:

Шаг 5: Основные команды Compose

docker compose up -d       # запустить стек в фоне
docker compose ps          # список запущенных сервисов
docker compose logs -f     # следить за логами
docker compose down        # остановить и удалить контейнеры
docker compose pull        # обновить образы

В современном файле Compose больше не нужна строка version:, которую показывают старые туториалы — Compose v2 её игнорирует. Docker Compose хорошо работает на любом VPS или выделенном сервере; для продакшн-стеков заметную разницу дают NVMe-хранилище и гарантированная RAM.