Перейти к содержимому
Главная страница » Установка Docker в Astra Linux

Установка Docker в Astra Linux

Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. В контексте Astra Linux (российской операционной системы для государственных учреждений и критически важных объектов) Docker предоставляет:

Важно знать: Astra Linux — это российская операционная система, сертифицированная ФСТЭК России. Docker в Astra Linux обеспечивает соответствие требованиям безопасности государственных учреждений и критически важных объектов.
  • Изоляция приложений — каждое приложение работает в своем контейнере
  • Портативность — приложения работают одинаково на разных системах
  • Безопасность — изоляция процессов и ресурсов
  • Эффективность — меньшее потребление ресурсов по сравнению с виртуализацией
  • Быстрое развертывание — готовые образы для популярных приложений
  • Совместимость с российскими стандартами — поддержка ГОСТ и требований безопасности

Содержание

Версии Astra Linux:

  • Astra Linux Special Edition (SE) — для систем с высокими требованиями безопасности
  • Astra Linux Common Edition (CE) — для рабочих станций и серверов
  • Astra Linux Smolensk — для встраиваемых систем

Совместимость с Docker:

Версия Astra LinuxПоддержка DockerОсобенности
Astra Linux SE 1.7✅ Docker 24.xПолная поддержка, SELinux
Astra Linux CE 2.12✅ Docker 23.x+Стандартная поддержка
Astra Linux Smolensk 1.0✅ Docker 20.x+Базовая поддержка

Минимальные требования:

  • Процессор: x86_64 или ARM64 архитектура
  • RAM: минимум 2 GB (рекомендуется 4 GB+)
  • Диск: минимум 20 GB свободного места
  • ОС: Astra Linux SE 1.7+ или CE 2.12+
  • Ядро: Linux 4.19+ (рекомендуется 5.15+)

Проверка совместимости:

# Проверяем архитектуру
uname -m

# Проверяем версию ядра
uname -r

# Проверяем версию Astra Linux
cat /etc/astra_version

# Проверяем поддержку виртуализации
lscpu | grep -i virtualization

# Проверяем доступную память
free -h

# Проверяем свободное место на диске
df -h /

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

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

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

# Обновляем список пакетов
sudo apt update

# Обновляем установленные пакеты
sudo apt upgrade -y

# Перезагружаем систему (если обновлено ядро)
sudo reboot

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

# Устанавливаем необходимые пакеты
sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release \
    software-properties-common \
    wget \
    unzip \
    build-essential \
    linux-headers-$(uname -r)

# Проверяем установку
dpkg -l | grep -E "(curl|gnupg|lsb-release)"

Настройка репозиториев

Добавление официального GPG ключа Docker:

# Скачиваем GPG ключ Docker
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Проверяем ключ
gpg --list-keys --keyid-format LONG | grep Docker

Добавление репозитория Docker:

# Определяем версию Astra Linux
ASTRA_VERSION=$(lsb_release -cs)

# Добавляем репозиторий Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $ASTRA_VERSION stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Обновляем список пакетов
sudo apt update

Установка Docker Engine

Способ 1: Установка из официального репозитория (рекомендуется)

# Устанавливаем Docker Engine
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Проверяем установку
docker --version
docker compose version

Способ 2: Установка через скрипт установки

# Скачиваем скрипт установки
curl -fsSL https://get.docker.com -o get-docker.sh

# Запускаем скрипт
sudo sh get-docker.sh

# Удаляем скрипт
rm get-docker.sh

3. Настройка автозапуска

# Включаем автозапуск Docker
sudo systemctl enable docker

# Запускаем Docker
sudo systemctl start docker

# Проверяем статус
sudo systemctl status docker

Установка Docker Compose

Способ 1: Встроенный Docker Compose (Docker 20.10+)

# Проверяем доступность встроенного Docker Compose
docker compose version

# Если доступен, используем его
docker compose up -d

Способ 2: Установка отдельного Docker Compose

# Скачиваем последнюю версию Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# Делаем исполняемым
sudo chmod +x /usr/local/bin/docker-compose

# Проверяем установку
docker-compose --version

Настройка и конфигурация

Настройка пользователя

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

# Применяем изменения (или перезаходим в систему)
newgrp docker

# Проверяем права
docker ps

Настройка daemon.json

Создаем файл конфигурации Docker:

# Создаем директорию для конфигурации
sudo mkdir -p /etc/docker

# Создаем файл конфигурации
sudo tee /etc/docker/daemon.json > /dev/null <
Рекомендация: Для работы с российскими реестрами добавьте в registry-mirrors адреса российских зеркал: https://mirror.yandex.ru и https://docker.mirrors.ustc.edu.cn

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

Базовые тесты

# Проверяем версию Docker
docker --version

# Проверяем версию Docker Compose
docker compose version

# Проверяем статус сервиса
sudo systemctl status docker

# Проверяем права пользователя
docker ps

Тестовый контейнер

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

# Проверяем работу с сетью
docker run --rm -d --name test-nginx -p 8080:80 nginx:alpine

# Проверяем доступность
curl http://localhost:8080

# Останавливаем тестовый контейнер
docker stop test-nginx

Настройка безопасности

Настройка SELinux

# Проверяем статус SELinux
sestatus

# Если SELinux включен, настраиваем политики для Docker
if command -v semanage &> /dev/null; then
    # Устанавливаем политики для Docker
    sudo semanage fcontext -a -t container_file_t "/var/lib/docker(/.*)?"
    sudo semanage fcontext -a -t container_file_t "/etc/docker(/.*)?"
    sudo semanage fcontext -a -t container_file_t "/var/run/docker.sock"
    
    # Применяем политики
    sudo restorecon -R -v /var/lib/docker
    sudo restorecon -R -v /etc/docker
    sudo restorecon -v /var/run/docker.sock
fi

Настройка AppArmor

# Проверяем статус AppArmor
sudo aa-status

# Если AppArmor включен, настраиваем профили
if command -v aa-enforce &> /dev/null; then
    # Устанавливаем профиль для Docker
    sudo aa-enforce /usr/bin/docker
fi
Важно: SELinux и AppArmor являются критически важными компонентами безопасности в Astra Linux. Не отключайте их без крайней необходимости, а лучше правильно настройте политики для Docker.

Оптимизация производительности

Настройка хранилища

# Проверяем текущий драйвер хранилища
docker info | grep "Storage Driver"

# Оптимизируем настройки overlay2
sudo tee -a /etc/docker/daemon.json > /dev/null <

Настройка ресурсов

# Создаем лимиты для контейнеров
docker run -d \
  --name resource-limited \
  --memory=512m \
  --cpus=0.5 \
  --pids-limit=100 \
  nginx:alpine

# Проверяем использование ресурсов
docker stats resource-limited --no-stream

Решение проблем

Проблема 1: Ошибка доступа к Docker socket

# Проверяем права на Docker socket
ls -la /var/run/docker.sock

# Исправляем права доступа
sudo chmod 666 /var/run/docker.sock

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

# Перезаходим в систему или выполняем
newgrp docker

Проблема 2: Конфликт с SELinux

# Проверяем статус SELinux
sestatus

# Временно отключаем SELinux (только для диагностики)
sudo setenforce 0

# Проверяем работу Docker
docker ps

# Включаем SELinux обратно
sudo setenforce 1

# Настраиваем правильные политики
sudo semanage fcontext -a -t container_file_t "/var/lib/docker(/.*)?"
sudo restorecon -R -v /var/lib/docker

Часто задаваемые вопросы

Вопрос 1: Совместим ли Docker с Astra Linux SE?

Ответ: Да, Docker полностью совместим с Astra Linux Special Edition. Требуется только правильная настройка SELinux политик и соблюдение требований безопасности.

Вопрос 2: Как настроить Docker для работы с российскими реестрами?

Ответ: Добавьте российские реестры в конфигурацию daemon.json:

{
  "registry-mirrors": [
    "https://mirror.yandex.ru",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

Вопрос 3: Можно ли использовать Docker без root прав?

Ответ: Да, добавив пользователя в группу docker. Но для продакшена рекомендуется использовать Docker Rootless или Podman.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *