任何人都可以解释docker.sock

我想了解在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套接字。 就像从另一个容器中启动新的容器一样。 或者用于自动服务发现和logging目的。 这会增加攻击面,因此如果在容器中安装docker套接字,那么在容器中运行受信任的代码时,应该小心,否则,您可以简单地危害运行docker守护进程的主机,因为默认情况下,Docker将以root身份启动所有容器。

Docker套接字在大多数安装中都有一个docker组,因此该组中的用户可以在没有root权限的情况下对docker套接字运行docker命令,但是实际的docker容器仍然获得root权限,因为docker守护进程有效地以root身份运行(它需要根权限才能访问命名空间和cgroups) 。

我希望它能回答你的问题。

更多信息: https : //docs.docker.com/engine/reference/commandline/dockerd/#examples