Как команда `docker run` находит Docker Daemon для выполнения?

«Как команда `docker run` находит Docker Daemon для выполнения?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Docker CLI (команда docker) взаимодействует с Docker Daemon (демоном) через сокет (socket). Местонахождение сокета определяется конфигурацией или переменными окружения.

Стандартные пути:

  • Unix/Linux/macOS (Docker Desktop): Unix-сокет unix:///var/run/docker.sock.
  • Windows: Именованный канал npipe:////./pipe/docker_engine.

Как CLI находит демона:

  1. Проверяется переменная окружения DOCKER_HOST.
    # Пример подключения к удаленному демону
    export DOCKER_HOST="tcp://192.168.1.100:2375"
    docker run hello-world # Команда уйдет на указанный хост:порт
  2. Если DOCKER_HOST не задана, используется сокет по умолчанию для текущей ОС.

Проверка текущего подключения:

docker info | grep -i "name|host"
# Или
echo $DOCKER_HOST

Важно для безопасности: Открытый TCP-порт (tcp://...:2375) без TLS и аутентификации дает полный контроль над демоном и хостом. В продакшене всегда используйте защищенные соединения (tcp://...:2376 с TLS) или SSH-туннели.