Подтвердить что ты не робот

Может кто-нибудь объяснить docker.sock

Я пытаюсь понять фактическую причину установки файла docker.sock в файле docker-compose.yml. Это для автоматического обнаружения?

volumes: - /var/run/docker.sock:/var/run/docker.sock

4b9b3361

Ответ 1

docker.sock - это сокет UNIX, который прослушивает демон Docker. Это главная точка входа в Docker API. Это также может быть сокет TCP, но по умолчанию из соображений безопасности Docker по умолчанию использует UNIX-сокет.

Клиент Docker cli использует этот сокет для выполнения команд docker по умолчанию. Вы также можете переопределить эти параметры.

Могут быть разные причины, по которым вам может понадобиться подключить гнездо Docker внутри контейнера. Как запуск новых контейнеров из другого контейнера. Или для автоматического обнаружения услуг и ведения журнала. Это увеличивает поверхность атаки, поэтому вы должны быть осторожны, если вы монтируете док-станцию ​​внутри контейнера, в этом контейнере есть доверенные коды, иначе вы можете просто скомпрометировать свой хост, на котором запущен демон докеров, поскольку Docker по умолчанию запускает все контейнеры как root.

Docker socket имеет группу докеров в большинстве случаев, поэтому пользователи внутри этой группы могут запускать команды докеров с док-сокета без разрешения root, но фактические контейнеры докеров все еще получают права на root, поскольку демон docker работает как root эффективно (для этого требуется разрешение root для доступа к пространству имен и cgroups).

Я надеюсь, что он ответит на ваш вопрос.

Дополнительная информация: https://docs.docker.com/engine/reference/commandline/dockerd/#examples