Подробный гайд: работа с Docker Compose на ALT Linux

Установка Docker Compose на ALT Linux. Настройка прав, запуск контейнеров, управление стеками, отладка ошибок и правила безопасности для стабильной работы.

2026.04.25                  


Подробный гайд: работа с Docker Compose на ALT LinuxПодробный гайд: работа с Docker Compose на ALT Linux Ниже приведён пошаговый, актуальный на 2026 год гайд по развёртыванию и использованию Docker Compose в ALT Linux (платформа 10 / Regular / Sisyphus). Гайд учитывает особенности дистрибутива: пакетный менеджер apt-get (RPM-бэкенд), systemd, LSM smack/apparmor, а также переход на Docker Compose V2.


1. Подготовка системы

Перед установкой обновите систему и установите базовые утилиты:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y curl gnupg2 lsb-release ca-certificates jq

Важно для ALT:

  • Не подключайте репозитории Docker для Debian/Ubuntu (download.docker.com/linux/debian). Они используют другой формат пакетов и менеджер зависимостей, что может сломать систему. Используйте либо родные пакеты ALT, либо официальные бинарные релизы.

2. Установка Docker Engine

В ALT Linux p10/Sisyphus Docker доступен в основном репозитории под именем docker.

sudo apt-get install docker -y
sudo systemctl enable --now docker

Проверьте статус и версию:

systemctl status docker
docker --version

Если в вашем репозитории пакета docker нет, подключите ветку p10 или regular через apt-repo

или используйте официальный установочный скрипт Docker (только для RPM-бэкенда):

curl -fsSL https://get.docker.com | sudo sh

3. Установка Docker Compose (V2)

С 2023 года официальная версия Compose поставляется как плагин CLI (docker compose без дефиса). Версия 1 (docker-compose) объявлена устаревшей.

Рекомендуемый способ (универсальный, работает на любой версии)

# Создаём директорию для плагинов
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins

# Скачиваем последнюю стабильную версию для amd64
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 \
  -o $DOCKER_CONFIG/cli-plugins/docker-compose

chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

Проверка

docker compose version
# Ожидаемый вывод: Docker Compose version v2.x.x

В ALT p10 может быть пакет docker-compose-plugin. Проверьте: apt-cache search docker-compose. Если есть, можно установить через sudo apt-get install docker-compose-plugin, но официальный плагин гарантирует последнюю версию и совместимость.


4. Настройка прав доступа

По умолчанию только root и пользователи в группе docker могут управлять демонами.

sudo usermod -aG docker $USER
newgrp docker  # или перезайдите в систему

Проверка:

docker run hello-world

5. Создание первого проекта (пример)

Создайте тестовую директорию и файл docker-compose.yml:

mkdir -p ~/demo-compose && cd ~/demo-compose
nano docker-compose.yml

Вставьте минимальный стек (Nginx + кастомное приложение + PostgreSQL):

version: "3.8"

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    depends_on:
      - app
    restart: unless-stopped

  app:
    image: python:3.11-slim
    command: python -m http.server 8000
    working_dir: /app
    volumes:
      - ./app:/app
    expose:
      - "8000"
    restart: unless-stopped

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: ${DB_USER:-admin}
      POSTGRES_PASSWORD: ${DB_PASSWORD:-secret}
      POSTGRES_DB: ${DB_NAME:-appdb}
    volumes:
      - pg/var/lib/postgresql/data
    ports:
      - "5432:5432"
    restart: unless-stopped

volumes:
  pg

Создайте необходимые директории:

mkdir -p html app
echo "<h1>ALT Linux + Docker Compose</h1>" > html/index.html

Запуск:

docker compose up -d

Проверка:

docker compose ps
curl http://localhost:8080

6. Основные команды управления

Команда Описание
docker compose up -d Запуск сервисов в фоне
docker compose down Остановка и удаление контейнеров, сетей
docker compose down -v Удаление томов вместе с контейнерами
docker compose logs -f [service] Просмотр логов
docker compose exec service sh Вход в контейнер
docker compose build Пересборка образов из Dockerfile
docker compose config Валидация и вывод итогового YAML
docker compose pull Обновление образов

7. Отладка и типичные проблемы

Проверка состояния демона

systemctl status docker
journalctl -u docker -n 50 --no-pager

Ошибка: permission denied while trying to connect to the Docker daemon socket

sudo systemctl restart docker
sudo usermod -aG docker $USER
newgrp docker

Ошибка с сетью/портами

docker compose ps
sudo ss -tulpn | grep :8080
sudo firewall-cmd --list-ports  # если используется firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

Ошибка при запуске из-за LSM (smack/apparmor)

ALT Linux может использовать smack.

Если контейнер падает с Permission denied на монтировании:

# Временно отключить для теста
sudo setenforce 0  # если SELinux
# Или добавить в compose.yml:
# security_opt:
#   - apparmor=unconfined
#   - label=disable

В большинстве случаев стандартная конфигурация ALT p10 работает без дополнительных правок.


8. Безопасность и best practices

1. Не запускайте сервисы от root внутри контейнеров

  • Используйте user: "1000:1000" в docker-compose.yml или создавайте non-root образы.

2. Храните секреты вне репозитория

Используйте .env файл (добавьте в .gitignore):
   DB_USER=appuser
   DB_PASSWORD=s3cure_p@ssw0rd
   DB_NAME=production_db

3. Ограничивайте ресурсы

   deploy:
     resources:
       limits:
         cpus: '1.0'
         memory: 512M

4. Регулярно обновляйте образы

   docker compose pull
   docker compose up -d --force-recreate

5. Изолируйте сети

  • Создавайте отдельные networks в docker-compose.yml, не используйте host без необходимости.

9. Особенности ALT Linux

Аспект Примечание
Пакетный менеджер apt-get с RPM-бэкендом. Не используйте dnf/yum.
Имя пакета docker (не docker-ce). Compose V2 лучше ставить как плагин.
Файловая система overlay2 работает стабильно на ext4/xfs.
LSM По умолчанию может быть smack или apparmor. При проблемах с правами на /var/lib/docker проверьте dmesg | grep -i smack.
Системная интеграция systemd используется по умолчанию. Сервис docker включён через systemctl enable docker.
Обновления ядра update-kernel в ALT требует перезагрузки для новых cgroups/namespace фич.