我试图了解在 docker-compose.yml
文件中安装 docker.sock
的实际原因。是为了自动发现吗?
volumes:
- /var/run/docker.sock:/var/run/docker.sock
最佳答案
docker.sock
是 Docker 守护程序正在监听的 UNIX 套接字。它是 Docker API 的主要入口点。它也可以是 TCP 套接字,但出于安全原因,Docker 默认使用 UNIX 套接字。
Docker cli 客户端默认使用这个套接字来执行 docker 命令。您也可以覆盖这些设置。
您可能需要在容器中安装 Docker 套接字的原因可能不同。就像从另一个容器中启动新容器一样。或用于自动服务发现和日志记录目的。这会增加攻击面,因此如果将 docker 套接字安装在容器内,则应小心,该容器内运行受信任的代码,否则您可以简单地破坏正在运行 docker 守护程序的主机,因为 Docker 默认以 root 身份启动所有容器。
Docker socket 在大多数安装中都有一个 docker 组,因此该组中的用户可以在没有 root 权限的情况下对 docker socket 运行 docker 命令,但实际的 docker 容器仍然获得 root 权限,因为 docker 守护进程以 root 身份有效运行(它需要 root 权限才能访问命名空间和 cgroups)。
我希望它能回答你的问题。
更多信息:https://docs.docker.com/engine/reference/commandline/dockerd/#examples
关于docker - 谁能解释 docker.sock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110146/