
Docker Compose позволяет запускать несколько контейнеров одновременно, используя один файл docker-compose.yml. На локальном компьютере это упрощает тестирование и разработку приложений, где требуется несколько сервисов, например база данных, кэш и веб-сервер. Для работы требуется установленный Docker версии не ниже 20.10 и Docker Compose версии 1.29 или выше.
Создание файла docker-compose.yml начинается с описания каждого сервиса, его образа, портов и томов. Для локальной разработки рекомендуется использовать bind mounts для синхронизации кода между контейнером и файловой системой компьютера. Это позволяет мгновенно видеть изменения без пересборки контейнера.
Запуск контейнеров выполняется командой docker compose up. При этом Compose автоматически создаёт сеть для сервисов, монтирует тома и устанавливает зависимости между контейнерами. Для остановки и очистки ресурсов используется команда docker compose down, которая удаляет контейнеры, сети и тома, не затрагивая локальные файлы.
Логи сервисов можно просматривать в реальном времени через docker compose logs -f. Это помогает отслеживать ошибки и поведение приложения. Для обновления образов и пересборки контейнеров используется docker compose pull и docker compose up —build, что обеспечивает актуальность сервисов без ручной настройки каждого контейнера.
Установка Docker и Docker Compose на Windows и Linux
На Windows рекомендуется использовать Docker Desktop версии 4.20 или выше, который включает Docker Engine и Docker Compose. Установка выполняется через официальный установщик с сайта docker.com. После установки необходимо включить интеграцию с WSL 2 для запуска Linux-контейнеров. Проверить установку можно командой docker —version для Docker и docker compose version для Compose.
На Linux установка выполняется через пакетный менеджер дистрибутива. Для Ubuntu используйте команды: sudo apt update, sudo apt install docker.io docker-compose-plugin. После установки рекомендуется добавить пользователя в группу docker командой sudo usermod -aG docker $USER, чтобы запуск контейнеров не требовал прав суперпользователя. Проверка выполняется командами docker —version и docker compose version.
Для обеих систем важно убедиться, что Docker Engine работает корректно. На Windows Docker Desktop автоматически запускается как сервис, на Linux сервис запускается командой sudo systemctl start docker и включается в автозагрузку через sudo systemctl enable docker. Наличие актуальных версий гарантирует совместимость с последними возможностями Docker Compose.
Проверка версии и работоспособности Docker Compose

Для проверки работоспособности можно создать тестовый docker-compose.yml с минимальным сервисом:
| Файл | Содержание |
|---|---|
| docker-compose.yml |
version: '3.9' services: test: image: busybox command: echo Hello Docker Compose |
Запустите тест командой docker compose up. В консоли должно отобразиться сообщение Hello Docker Compose. После успешного выполнения используйте docker compose down для удаления созданного контейнера и сети.
Для дополнительной проверки можно вывести список доступных сервисов и сетей командой docker compose ps. Она покажет состояние всех контейнеров, даже если они остановлены, что помогает убедиться в корректной работе Compose на локальном компьютере.
Создание docker-compose.yml для простого приложения

Файл docker-compose.yml описывает все сервисы, их образы, порты и тома. Для простого приложения можно создать веб-сервер на Nginx и базу данных MySQL. Структура файла должна соответствовать версии Compose 3.9 и выше.
Пример минимального файла:
version: '3.9' services: web: image: nginx:alpine ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: testdb
Рекомендации при создании:
- Используйте bind mounts для синхронизации локальных файлов с контейнером.
- Определяйте переменные окружения через environment для конфиденциальных данных.
- Назначайте порты только при необходимости внешнего доступа.
- Следите за совместимостью версий образов с вашим локальным Docker Engine.
После создания файла рекомендуется проверить синтаксис командой docker compose config. Она объединяет все параметры и выдаёт готовую конфигурацию для запуска контейнеров.
Запуск сервисов через команду docker compose up
Рекомендации при запуске:
- Перед первым запуском убедитесь, что образы скачаны или доступны локально. Compose автоматически загружает отсутствующие образы.
- Если сервисы зависят друг от друга, порядок определяется опцией depends_on в файле конфигурации.
- Для пересборки образов при изменении Dockerfile используйте ключ —build: docker compose up —build.
- Следите за портами, указанными в ports, чтобы избежать конфликтов с другими сервисами на компьютере.
После запуска всех сервисов рекомендуется проверить их статус командой docker compose ps, которая отображает список контейнеров, их состояние и назначенные порты. Это помогает убедиться, что сервисы работают корректно перед началом тестирования приложения.
Остановка и удаление контейнеров с docker compose down
Команда docker compose down останавливает все контейнеры, созданные по docker-compose.yml, и удаляет сети, созданные Compose. Контейнеры удаляются полностью, включая все процессы, но локальные файлы и тома остаются нетронутыми, если не использовать дополнительные ключи.
Рекомендации по использованию:
- Для удаления связанных томов используйте ключ -v: docker compose down -v. Это освобождает дисковое пространство и удаляет данные баз данных, кэшей и других сервисов.
- Если требуется удалить образы, используйте ключ —rmi all: docker compose down —rmi all. Это полезно при обновлении версии образов или очистке старых билдов.
- Перед остановкой убедитесь, что сервисы не выполняют критические операции, чтобы избежать потери данных.
После выполнения docker compose down рекомендуется проверить статус контейнеров командой docker ps -a, чтобы убедиться, что все сервисы корректно остановлены и удалены.
Просмотр логов и состояния контейнеров

Для контроля работы сервисов в Docker Compose используется несколько команд, позволяющих отслеживать логи и текущее состояние контейнеров. Это помогает выявлять ошибки и оптимизировать работу приложений на локальном компьютере.
Основные команды для логирования:
- docker compose logs [имя_сервиса] – показывает только логи конкретного сервиса, что удобно при отладке отдельных компонентов.
Команды для проверки состояния контейнеров:
- docker compose ps – отображает список контейнеров, их состояние, порты и имена сетей.
- docker inspect [имя_контейнера] – предоставляет детальную информацию о конфигурации, IP-адресе и томах контейнера.
- docker stats – показывает использование ресурсов контейнерами в реальном времени, включая CPU, память и сетевую активность.
Рекомендуется регулярно использовать docker compose logs -f при локальной разработке и тестировании, чтобы быстро выявлять ошибки при запуске сервисов и корректировать конфигурацию docker-compose.yml без остановки всей среды.
Настройка переменных окружения для docker-compose.yml

Переменные окружения позволяют гибко конфигурировать сервисы без изменения кода контейнера. Их используют для указания паролей, путей к томам, портов и других параметров. В docker-compose.yml переменные задаются через ключ environment или через файл .env.
Пример использования в файле docker-compose.yml:
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
Файл .env должен находиться в той же директории и содержать конкретные значения:
DB_ROOT_PASSWORD=rootpass DB_NAME=testdb
Рекомендации по работе с переменными окружения:
- Используйте .env для секретов и конфиденциальных данных вместо прямого указания в docker-compose.yml.
- При изменении .env используйте docker compose up —build для пересборки контейнеров с актуальными значениями.
Такой подход облегчает перенос проекта между машинами и средами, а также упрощает настройку разных конфигураций для разработки, тестирования и продакшена.
Обновление и пересборка сервисов через Docker Compose

Для обновления образов сервисов используется команда docker compose pull. Она загружает последние версии образов, указанных в docker-compose.yml, без остановки работающих контейнеров. Это удобно для синхронизации локальной среды с актуальными версиями приложений.
Пересборка контейнеров требуется при изменении Dockerfile или локального кода. Используется команда docker compose up —build, которая пересобирает образы и запускает сервисы с обновлёнными версиями. Для одновременной остановки старых контейнеров и запуска новых рекомендуется сочетать с ключом -d для фонового режима.
Рекомендации при обновлении и пересборке:
- Перед пересборкой проверяйте синтаксис docker-compose.yml командой docker compose config.
- Используйте docker compose down -v для удаления старых томов, если требуется очистка данных перед новой сборкой.
- После пересборки проверяйте логи сервисов через docker compose logs -f для своевременного обнаружения ошибок.
- Следите за совместимостью новых образов с локальной версией Docker Engine и другими сервисами в проекте.
Такой подход позволяет поддерживать локальную среду разработки в актуальном состоянии и гарантирует корректную работу всех сервисов после обновлений.
Вопрос-ответ:
Какие версии Docker и Docker Compose подходят для локальной установки?
Для корректной работы на локальном компьютере рекомендуется использовать Docker версии 20.10 и выше, а также Docker Compose версии 1.29 и выше. На Windows удобнее устанавливать Docker Desktop, который включает Compose, а на Linux — пакеты docker.io и docker-compose-plugin через менеджер пакетов дистрибутива.
Как проверить, что Docker Compose установлен и работает правильно?
Для проверки версии используйте команду docker compose version, которая выводит текущую версию Compose. Для проверки работоспособности можно создать минимальный docker-compose.yml с одним сервисом, например на базе busybox, и выполнить docker compose up. Если контейнер запускается и выводит сообщение, сервис работает корректно.
Как запустить несколько сервисов одновременно и управлять их зависимостями?
Все сервисы указываются в файле docker-compose.yml. Для запуска используется команда docker compose up. Опция depends_on позволяет задать порядок запуска контейнеров, например, чтобы база данных стартовала перед веб-сервером. Для запуска в фоновом режиме добавляется ключ -d.
Каким образом можно просматривать логи конкретного сервиса и следить за состоянием контейнеров?
Для просмотра логов конкретного сервиса используйте docker compose logs [имя_сервиса], а для потокового вывода в реальном времени — docker compose logs -f. Проверка состояния контейнеров выполняется командой docker compose ps, которая показывает список всех сервисов, их состояние и назначенные порты.
Как обновлять образы и пересобирать контейнеры после изменений в Dockerfile или коде?
Для загрузки новых версий образов используется docker compose pull. Если изменился Dockerfile или локальный код, выполняйте docker compose up —build для пересборки контейнеров. При необходимости можно удалить старые тома командой docker compose down -v, чтобы очистить данные перед пересборкой.
Можно ли запускать Docker Compose на Windows и Linux одинаково, и какие особенности стоит учитывать?
Да, Docker Compose работает на обеих платформах, но есть отличия в установке и настройке. На Windows рекомендуется использовать Docker Desktop с включённой интеграцией WSL 2 для запуска Linux-контейнеров. На Linux установка проводится через пакетный менеджер дистрибутива, например apt для Ubuntu: sudo apt install docker.io docker-compose-plugin. На обеих системах важно проверить версии командой docker —version и docker compose version, а также добавить пользователя в группу docker на Linux, чтобы запуск контейнеров не требовал прав суперпользователя. После установки рекомендуется протестировать работу через минимальный docker-compose.yml с простым сервисом, чтобы убедиться, что контейнеры создаются и выводят ожидаемый результат.
