Установка Docker и docker compose
Docker из репозитория Ubuntu часто устарел на пару версий. Правильный путь — официальный docker.com репозиторий.
Установка (Ubuntu 22.04/24.04, Debian 12)
# Зависимости
apt update
apt install -y ca-certificates curl gnupg
# GPG-ключ Docker
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# Репозиторий
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list
# Установка
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-pluginПроверка
docker --version
docker compose version
docker run --rm hello-worldПоследняя команда скачает и запустит тестовый контейнер. Успех = Docker работает.
Non-root пользователь
Работать под root опасно. Создайте пользователя и добавьте в группу docker:
adduser deploy
usermod -aG docker deploy
# Разлогинтесь и войдите под deploy, проверьте:
# docker psВнимание: добавление в группу docker = root-эквивалент. Не давайте этот доступ ненадёжным пользователям.
Первый docker-compose стек
Создайте docker-compose.yml:
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stoppedЗапустите:
mkdir html
echo '<h1>Hello from Docker</h1>' > html/index.html
docker compose up -d
docker compose psОткройте http://<VPS-IP> — увидите приветствие. Остановить: docker compose down.
Автозапуск при ребуте
Docker уже настроен на автозапуск (systemctl is-enabled docker). Ваши контейнеры перезапустятся благодаря restart: unless-stopped.
Cleanup дискового места
Docker любит захламлять диск. Раз в месяц:
docker system prune -af --volumesУдалит все неиспользуемые контейнеры, образы, volumes, сети.