dockerd & Docker Socket

Тема дорожной карты · Docker & Containers

dockerd — долгоживущий движок; CLI ходит к нему через /var/run/docker.sock (или TCP). Конфигурируется через /etc/docker/daemon.json: log driver, registry mirrors, дефолтные пулы адресов, storage driver. Сокет фактически равен root-доступу: всё, что может его читать, способно запустить привилегированный контейнер и захватить хост, поэтому осторожнее с пробросом docker.sock и членством в группе. Для удалённого доступа лучше SSH-транспорт (DOCKER_HOST=ssh://...) или mTLS поверх TCP. Rootless-режим запускает dockerd от обычного пользователя для более сильной изоляции.

Как это работает

dockerd & Docker Socket на Linux — рекомендуемый путь: Docker Engine + containerd работают нативно без VM. На macOS и Windows Docker Desktop крутит Linux VM под капотом (HyperKit/WSL2) и даёт тот же CLI. Rootless-режим запускает daemon под не-root пользователем, сужая поверхность атаки (но с особенностями сети). Группа docker на Linux функционально эквивалентна root — любой в ней может монтировать ФС хоста.

Когда применять

Docker Desktop — для разработки на ноуте; ставьте Docker Engine напрямую на production Linux-хосты. Для RF/CI-сред, где Docker Desktop licensing нежелателен, подходят OrbStack (macOS), Rancher Desktop, Podman Desktop или Engine внутри Lima. Закрепляйте версию Engine в production через pinning в apt/yum-репозиториях — minor-версии иногда меняют дефолты (например cgroups v1 → v2).

Типичные ошибки

Ловушки dockerd & Docker Socket: добавление пользователей в группу docker в надежде, что это не root (это root); обновление Engine в production без чтения changelog (cgroup/storage driver-переключения ломают контейнеры); 2 GB RAM по умолчанию в VM Docker Desktop (сборки уходят в OOM); установка Docker одновременно через Snap и официальный репо на Ubuntu (path-коллизии). На Linux предпочитайте download.docker.com дистрибутивным пакетам.

Связанные понятия

Полезные ресурсы