Установка Docker & Docker Compose на Alma Linux 10

A developer's workspace with dual monitors showing Docker interfaces, colorful LEDs, and plants, in a cozy atmosphere.

Полная инструкция по установке и настройке Docker & Docker Compose & Portainer на Alma Linux 10

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

Важно: Требования: Alma Linux 10 (минимальная установка или рабочая станция), доступ root или sudo, выход в интернет.

Обновление системы

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

sudo dnf update -y && sudo dnf upgrade -y

Установка необходимых зависимостей

sudo dnf install -y \
  yum-utils \
  device-mapper-persistent-data \
  lvm2 \
  curl \
  wget \
  git

Настройка SELinux

Docker начиная с версии 20.10 корректно работает с SELinux в режиме enforcing. Оставьте стандартные настройки.

# Проверить текущий режим
getenforce

# Ожидаемый вывод: Enforcing
# Изменять режим для работы Docker не требуется

Настройка Firewall

Откройте необходимые порты для Portainer и будущих сервисов:

# Portainer HTTPS (рекомендуется)
sudo firewall-cmd --permanent --add-port=9443/tcp

# Portainer HTTP (опционально)
sudo firewall-cmd --permanent --add-port=9000/tcp

# Порт для ваших приложений (пример)
sudo firewall-cmd --permanent --add-port=8080/tcp

# Применить изменения
sudo firewall-cmd --reload

# Проверить открытые порты
sudo firewall-cmd --list-ports

Установка Docker Engine

Важно: Используйте только официальный репозиторий Docker — пакет из репозитория дистрибутива содержит устаревшую версию.

Добавление официального репозитория Docker

sudo dnf config-manager \
  --add-repo \
  https://download.docker.com/linux/rhel/docker-ce.repo

Установка Docker CE и компонентов

Установите Docker Engine, CLI, containerd и плагины:

sudo dnf install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

Что устанавливается:

  • docker-ce — Docker Engine (основной демон)
  • docker-ce-cli — Клиент командной строки
  • containerd.io — Среда выполнения контейнеров
  • docker-buildx-plugin — Расширенная сборка образов (buildx)
  • docker-compose-plugin — Docker Compose v2 как плагин

Настройка и запуск Docker

Запуск сервиса и автозапуск

# Запустить Docker прямо сейчас
sudo systemctl start docker

# Включить автозапуск при загрузке системы
sudo systemctl enable docker

# Проверить статус — должно быть Active: active (running)
sudo systemctl status docker

Добавление пользователя в группу docker

Это позволит запускать Docker-команды без sudo:

# Добавить текущего пользователя в группу docker
sudo usermod -aG docker $USER

# Применить изменения без перелогинивания
newgrp docker

# Или просто выйти из сессии и войти снова

Настройка daemon.json (рекомендуется)

Создайте файл конфигурации Docker daemon для ограничения логов и настройки сети:

sudo nano /etc/docker/daemon.json

Содержимое файла:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "live-restore": true,
  "default-address-pools": [
    {"base": "172.20.0.0/16", "size": 24}
  ]
}
# Перезапустить после изменения конфигурации
sudo systemctl restart docker

Docker Compose

Docker Compose v2 уже установлен на шаге 02 как плагин. Команда: docker compose (без дефиса).

Вариант 1 — плагин (рекомендуется, уже установлен)

# Проверить версию плагина
docker compose version

# Основные команды
docker compose up -d        # Запустить в фоне
docker compose down         # Остановить
docker compose ps           # Статус сервисов
docker compose logs -f      # Логи в реальном времени

Вариант 2 — standalone бинарник (для совместимости)

Устанавливайте только если нужна команда docker-compose (с дефисом) для старых скриптов:

# Получить актуальную версию автоматически
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest \
  | grep '"tag_name"' | cut -d'"' -f4)

# Скачать и установить
sudo curl -L \
  "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
  -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

# Проверка
docker-compose --version

Проверка установки

Базовые проверки

# Проверить версии
docker --version
docker compose version

# Подробная информация о системе
docker info

# Запустить тестовый контейнер
docker run --rm hello-world

# Список запущенных контейнеров
docker ps

Ожидаемый результат hello-world: вы увидите сообщение «Hello from Docker!» — это подтверждает, что daemon, клиент и сеть работают корректно.

Portainer — Web GUI интерфейс

Portainer CE — бесплатный open-source web-интерфейс для управления Docker. Позволяет управлять контейнерами, образами, сетями, томами и стеками через браузер без командной строки.

Возможности Portainer

  • Создание и управление контейнерами через UI
  • Развёртывание стеков (Docker Compose) прямо в браузере
  • Просмотр логов и терминал в контейнер
  • Управление образами, сетями и томами
  • Статистика потребления ресурсов в реальном времени
  • Управление пользователями и правами доступа

Создание volume и запуск Portainer

# Создать volume для хранения данных Portainer
docker volume create portainer_data

# Запустить Portainer
docker run -d \
  --name portainer \
  --restart=always \
  -p 9000:9000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Альтернатива — через Docker Compose

Создайте файл docker-compose.portainer.yml:

version: '3.8'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "9000:9000"
      - "9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

volumes:
  portainer_data:

# Запустить стек
docker compose -f docker-compose.portainer.yml up -d

# Проверить статус
docker ps | grep portainer

Первый вход в Portainer

Открыть в браузере

# HTTPS (рекомендуется) — самоподписанный сертификат, браузер выдаст предупреждение
https://<IP-адрес-сервера>:9443

# HTTP (без шифрования)
http://<IP-адрес-сервера>:9000

Важно: с момента первого запуска Portainer у вас есть только 5 минут для создания аккаунта admin. Если время вышло — перезапустите контейнер: docker restart portainer

Шаги первоначальной настройки

  • Откройте браузер по адресу выше. Примите предупреждение о самоподписанном сертификате.
  • Задайте имя пользователя (по умолчанию admin) и надёжный пароль (минимум 12 символов).
  • Нажмите «Create user».
  • На странице быстрого старта выберите Get Startedlocal для управления локальным Docker.
  • Нажмите Connect — вы окажетесь в главном дашборде Portainer.

Обновление Portainer

# Скачать новый образ
docker pull portainer/portainer-ce:latest

# Остановить и удалить старый контейнер (данные сохранятся в volume!)
docker stop portainer && docker rm portainer

# Запустить заново с теми же параметрами
docker run -d \
  --name portainer \
  --restart=always \
  -p 9000:9000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Полезные команды — шпаргалка

КомандаОписание
docker psСписок запущенных контейнеров
docker ps -aВсе контейнеры, включая остановленные
docker stop <id>Остановить контейнер
docker start <id>Запустить контейнер
docker restart <id>Перезапустить контейнер
docker rm <id>Удалить остановленный контейнер
docker exec -it <id> bashОткрыть терминал в контейнере
docker logs -f <id>Логи контейнера в реальном времени
docker imagesСписок локальных образов
docker pull <image>Скачать образ из Docker Hub
docker rmi <image>Удалить образ
docker system prune -aОчистить всё неиспользуемое
docker statsМониторинг использования ресурсов
docker compose up -dЗапустить стек в фоне
docker compose downОстановить стек
docker compose down -vОстановить стек и удалить тома
docker compose up -d —buildПересобрать и перезапустить стек
docker compose logs -fЛоги всех сервисов стека
docker compose psСтатус сервисов стека
docker volume lsСписок томов
docker network lsСписок сетей

Важно: Безопасность в продакшене: ограничьте доступ к порту 9443 через firewall только с доверенных IP. Настройте обратный прокси (nginx/traefik) с Let’s Encrypt сертификатом для нормального TLS.

Оцените статью
IT-Sierra