Подготовка
Пример рассчитан на Arch Linux или CachyOS. Требуются sudo и доступ к реестру образов. Контейнер запустит тестовый Nginx только на loopback-интерфейсе.
sudo pacman -Syu docker docker-compose
sudo systemctl enable --now docker
sudo docker compose version
mkdir -p ~/compose-demo
cd ~/compose-demo
Доступ к Docker фактически даёт привилегии root, поэтому в примере используется sudo, без добавления пользователя в группу docker.
Compose-файл
Создайте в каталоге проекта файл compose.yaml:
services:
web:
image: nginx:stable-alpine
ports:
- "127.0.0.1:8080:80"
restart: unless-stopped
Порт 8080 компьютера направляется на порт 80 контейнера. Привязка к 127.0.0.1 исключает прямую доступность сервиса из локальной сети. Тег stable-alpine меняется со временем; для воспроизводимого production-развёртывания фиксируйте digest проверенного образа.
Запуск и проверка
sudo docker compose config
sudo docker compose up -d
sudo docker compose ps
curl -I http://127.0.0.1:8080
config проверяет и выводит итоговую конфигурацию. up -d создаёт контейнер в фоне. Откройте адрес в браузере: должна появиться стандартная страница Nginx.
Диагностика
sudo docker compose logs --tail=50 web
sudo docker compose exec web nginx -t
Журнал покажет ошибки запуска, а nginx -t проверит конфигурацию внутри контейнера. Если порт занят, выберите другой локальный порт в YAML и повторите up -d.
Остановка и обновление
sudo docker compose down
sudo docker compose pull
sudo docker compose up -d
down удаляет контейнер и сеть проекта. В этом примере постоянных данных нет. В проектах с томами сначала продумайте резервное копирование; флаг down -v удаляет именованные тома и может уничтожить данные.
Документация: Docker Compose.