Open penglongli opened 6 years ago
/var/run/docker.sock 是 Docker Daemon 默认监听的 Unix 域套接字。
/var/run/docker.sock
什么是 Unix 域套接字?
这是个好问题,套接字即我们通常说的 Socket,Unix 域套接字 可以使同一台操作系统上的两个或多个进程进行数据通信。
Unix 域套接字
与 Internet 套接字 相比,Internet 套接字使用网络底层 TCP/IP 协议进行通信,需要显示指定 IP 地址,并且在网络里传播;Unix 域套接字的通信是在内核里而并不在网络里传播,可以在单机上用于进程间通信。
Internet 套接字
写此篇时的笔者并不太清楚套接字分为哪些种,上边描述参考了维基和别人的一些笔记
参考:
Docker 容器中的进程可以通过 /var/run/docker.sock 套接字文件来与 Docker Daemon 进行通信。
为什么要与 Docker daemon 进行通信?
我们每台机器上的 Docker 都是一个 C/S (client/server) 软件,我们用到的 docker ps docker images 等命令其实就是 cli。Docker daemon 与内核进行交流,创建、操作和管理容器。
docker ps
docker images
详见:https://docs.docker.com/machine/overview/#whats-the-difference-between-docker-engine-and-docker-machine
/var/run/docker.sock 能用来做什么?
通常来说,我们并不需要显式知道用来做什么。
容器挂载 /var/run/docker.sock 文件是做什么?
比如我们想要在一个 Docker 容器中使用 Docker 来做应用编译。常见的就是通过 Docker 跑了一个 Jenkins,然后在此容器中使用 Docker 来做应用的编译构建。
/var/run/docker.sock
是 Docker Daemon 默认监听的 Unix 域套接字。什么是 Unix 域套接字?
这是个好问题,套接字即我们通常说的 Socket,
Unix 域套接字
可以使同一台操作系统上的两个或多个进程进行数据通信。与
Internet 套接字
相比,Internet 套接字使用网络底层 TCP/IP 协议进行通信,需要显示指定 IP 地址,并且在网络里传播;Unix 域套接字的通信是在内核里而并不在网络里传播,可以在单机上用于进程间通信。参考:
关于 /var/run/docker.sock 的使用
Docker 容器中的进程可以通过
/var/run/docker.sock
套接字文件来与 Docker Daemon 进行通信。为什么要与 Docker daemon 进行通信?
我们每台机器上的 Docker 都是一个 C/S (client/server) 软件,我们用到的
docker ps
docker images
等命令其实就是 cli。Docker daemon 与内核进行交流,创建、操作和管理容器。详见:https://docs.docker.com/machine/overview/#whats-the-difference-between-docker-engine-and-docker-machine
/var/run/docker.sock 能用来做什么?
通常来说,我们并不需要显式知道用来做什么。
容器挂载 /var/run/docker.sock 文件是做什么?
比如我们想要在一个 Docker 容器中使用 Docker 来做应用编译。常见的就是通过 Docker 跑了一个 Jenkins,然后在此容器中使用 Docker 来做应用的编译构建。