docker - 谁能解释 docker.sock

标签 docker

我试图了解在 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/

相关文章:

java - JAR 在本地工作,但在 Docker 容器中挂起失败 - Apache-POI

Docker for Windows 卡在 “Kubernetes is Starting”

docker - docker swarm撰写约束

docker - HOME 目录下的数据是如何保存在 cloud shell 上的?

docker 组成 : run several containers that only differ in their command

linux - 在 Docker 中以读/写模式挂载文件

linux - 这个奇怪的 docker 命令是什么意思?

docker - 在 Go 应用程序中获取容器 IP

spring-boot - 在 Azure Functions : Permission denied with server. 端口上运行 Spring Boot native 应用程序:80

git - 如何获取github工作流程的短sha?