Введение / Зачем это нужно
Docker Compose — это инструмент для определения и запуска многоконтейнерных Docker-приложений. С помощью простого YAML-файла вы можете настроить сервисы, сети и тома, а затем запустить всё одной командой.
После выполнения этого гайда вы сможете:
- Развертывать сложные приложения (например, веб-сервер + база данных) одной командой.
- Управлять жизненным циклом контейнеров (запуск, остановка, пересборка).
- Изолировать окружения для разработки, тестирования и продакшена.
Установка через официальный репозиторий Docker гарантирует получение актуальной версии (v2) с регулярными обновлениями и безопасностью.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть Ubuntu 22.04 LTS или 20.04 LTS (инструкция проверена на этих версиях).
- У вас есть права суперпользователя (sudo) для установки пакетов.
- Docker Engine уже установлен и запущен.
Если Docker не установлен, сначала выполните гайд по установке Docker на Ubuntu. Проверить можно командой:docker --version
Пример вывода:Docker version 24.0.7, build afdd53b. - Система обновлена (рекомендуется):
sudo apt update && sudo apt upgrade -y
Шаг 1: Установка зависимостей
Установите curl для загрузки GPG-ключа и gnupg для работы с ним:
sudo apt update
sudo apt install -y curl gnupg
💡 Совет: Пакет
ca-certificatesобычно уже установлен, но если возникнут ошибки SSL, установите его:sudo apt install -y ca-certificates.
Шаг 2: Добавление официального GPG-ключа Docker
Docker подписывает свои пакеты GPG-ключом. Добавьте его в системное хранилище:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Что делает команда:
curl -fsSL— тихий загрузчик, следуют перенаправлениям.gpg --dearmor— конвертирует ключ из ASCII-формата в бинарный.- Ключ сохраняется в
/usr/share/keyrings/docker-archive-keyring.gpg— стандартное место для ключей APT.
Шаг 3: Добавление репозитория Docker в APT
Добавьте репозиторий Docker, соответствующий вашей версии Ubuntu:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Разбор команды:
$(dpkg --print-architecture)— автоматически определяет архитектуру (amd64, arm64 и т.д.).$(lsb_release -cs)— определяет кодовое имя вашего релиза (jammy, focal).- Запись попадает в
/etc/apt/sources.list.d/docker.list— отдельный файл для сторонних репозиториев.
Шаг 4: Установка плагина Docker Compose
Теперь установите сам плагин Docker Compose:
sudo apt update
sudo apt install -y docker-compose-plugin
⚠️ Важно: Пакет называется
docker-compose-plugin(для версии v2). Не путайте сdocker-compose(устаревшая v1), который может быть в репозиториях Ubuntu по умолчанию.
После установки Docker Compose будет доступен как плагин к Docker CLI: docker compose.
Шаг 5: Проверка установки
Убедитесь, что установка прошла успешно:
docker compose version
Ожидаемый вывод (пример):
Docker Compose version v2.24.5
Если видите версию — всё готово. Если команда не найдена, перезапустите Docker:
sudo systemctl restart docker
Шаг 6: Настройка прав доступа (опционально)
По умолчанию для работы с Docker и Docker Compose требуются права root. Чтобы использовать их без sudo:
- Добавьте текущего пользователя в группу
docker:sudo usermod -aG docker $USER - Перелогиньтесь в системе или выполните:
newgrp docker - Проверьте:
Если нет ошибок доступа — настройка успешна.docker ps
⚠️ Предупреждение: Добавление в группу
dockerдаёт права, эквивалентные root. Убедитесь, что доверяете всем пользователям в этой группе.
Проверка результата
Создайте тестовый проект для проверки:
- Создайте каталог и файл
docker-compose.yml:mkdir ~/test-compose && cd ~/test-compose cat > docker-compose.yml <<EOF version: '3.8' services: hello-world: image: hello-world EOF - Запустите:
docker compose up - Вы должны увидеть вывод образа
hello-worldи сообщение о успешном завершении. - Очистите:
docker compose down
Если всё работает — Docker Compose установлен и настроен корректно.
Возможные проблемы
Ошибка: docker: command not found после установки
Причина: Переменная PATH не обновлена или Docker не перезапущен.
Решение:
sudo systemctl restart docker
# Или перезагрузите систему
Ошибка: Got permission denied while trying to connect to the Docker daemon socket
Причина: Пользователь не в группе docker.
Решение: Выполните настройку прав доступа и перелогиньтесь.
Ошибка: The repository does not have a Release file
Причина: Неправильное кодовое имя Ubuntu в репозитории (например, используется не支持的 версия).
Решение: Убедитесь, что $(lsb_release -cs) возвращает jammy (22.04) или focal (20.04). Для других версий Ubuntu используйте соответствующие кодовые имена из документации Docker.
Пакет docker-compose-plugin не найден
Причина: Репозиторий Docker не добавлен или не обновлён.
Решение:
sudo apt update
# Проверьте наличие файла /etc/apt/sources.list.d/docker.list
cat /etc/apt/sources.list.d/docker.list
Если файл пустой или отсутствует — повторите Шаг 3.
Конфликт с установленным docker-compose (v1) из репозитория Ubuntu
Причина: Параллельно установлены v1 и v2.
Решение: Удалите старую версию:
sudo apt remove -y docker-compose
Оставьте только docker-compose-plugin.
Дополнительные ресурсы
- Официальная документация Docker Compose: docs.docker.com/compose
- Справочник по
docker compose:docker compose --help - Примеры
docker-compose.yml: github.com/docker/awesome-compose