Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. В контексте Astra Linux (российской операционной системы для государственных учреждений и критически важных объектов) Docker предоставляет:
- Изоляция приложений — каждое приложение работает в своем контейнере
- Портативность — приложения работают одинаково на разных системах
- Безопасность — изоляция процессов и ресурсов
- Эффективность — меньшее потребление ресурсов по сравнению с виртуализацией
- Быстрое развертывание — готовые образы для популярных приложений
- Совместимость с российскими стандартами — поддержка ГОСТ и требований безопасности
Версии 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 <
Проверка установки
Базовые тесты
# Проверяем версию 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
Оптимизация производительности
Настройка хранилища
# Проверяем текущий драйвер хранилища
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.