Перейти к содержанию

Эксплуатация Docker: сеть, данные, журналы и безопасность

Официальная документация НАЙС.ОС указывает Docker как компонент минимальной платформы. Его жизненный цикл должен контролироваться с учётом политики системы — в том числе default DROP в iptables и ограничений прав. Далее приводится порядок диагностики, а не универсальный рецепт запуска контейнеров с расширенными привилегиями.

Определение версии и состояния

rpm -q docker containerd runc 2>/dev/null || true
systemctl status docker --no-pager
systemctl status containerd --no-pager
docker version
docker info
docker ps -a

Если Docker CLI доступен, но демон недоступен, проверьте unit, journal и права сокета. Отсутствие вывода docker ps не доказывает, что контейнеры уничтожены.

Где находятся данные

Каталог /var/lib/docker/ обычно хранит метаданные движка, но используемый data-root нужно читать из docker info и /etc/docker/daemon.json (если файл есть). Docker volumes нельзя считать резервной копией, даже если контейнер пересоздаётся без потери данных.

docker info --format '{{.DockerRootDir}}'
docker volume ls
docker network ls
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'

Не редактируйте непосредственно файлы внутри DockerRootDir, пока работает демон, и не удаляйте его ради «сброса» ошибки.

Логи контейнера

docker logs --tail 100 --timestamps ИМЯ_КОНТЕЙНЕРА
docker inspect ИМЯ_КОНТЕЙНЕРА --format '{{.State.Status}} {{.State.ExitCode}}'
journalctl -u docker -b --no-pager -n 100

Вывод логов может содержать токены и персональные данные — обезличивайте его перед передачей в поддержку.

Сети и iptables

iptables -S FORWARD
iptables -t nat -S
iptables -S DOCKER-USER 2>/dev/null || true
docker network ls

В действующих версиях Docker детали пользовательских цепочек зависят от бэкенда firewall и версии движка. В НАЙС.ОС администратор пользуется iptables; не очищайте цепочки Docker и не выключайте управление iptables через daemon.json без схемы альтернативной фильтрации. Для локальных сервисов отдельно проверьте, что опубликованный порт не стал доступным извне вопреки INPUT/DOCKER-USER правилам.

Права на Docker socket

Участник группы docker может получить возможности, сопоставимые с root, запуская привилегированные контейнеры или монтируя файловую систему хоста. Предоставляйте доступ только утверждённым администраторам, не назначайте группу всем разработчикам.

Обновление и восстановление

  1. Зафиксируйте текущие образы/версии, Compose-конфигурацию, volumes и сеть.
  2. Создайте согласованные резервные копии данных приложения.
  3. Проверьте совместимость версий API Docker, containerd и образов.
  4. Обновляйте в согласованном окне, следите за journal и healthcheck.
  5. После обновления проверьте маршруты, опубликованные порты и iptables OUTPUT/FORWARD.
  6. Откат возможен только при наличии совместимых данных и предыдущих образов; не полагайтесь на docker rollback как универсальную команду.

Источники: Core/docker/SPECS/docker.spec, официальная политика НАЙС.ОС; Docker Engine.