我在 Docker 容器中运行,netstat -x | grep docker
得到了以下结果:
unix 3 [ ] STREAM CONNECTED 62288711 /var/run/docker.sock
unix 3 [ ] STREAM CONNECTED 59416957 /var/run/docker.sock
unix 3 [ ] STREAM CONNECTED 52070 /var/run/dockershim.sock
unix 3 [ ] STREAM CONNECTED 52071 /var/run/dockershim.sock
unix 3 [ ] STREAM CONNECTED 51987 /var/run/docker.sock
unix 3 [ ] STREAM CONNECTED 63299168 /var/run/docker.sock
unix 3 [ ] STREAM CONNECTED 52649 /var/run/docker.sock
unix 3 [ ] STREAM CONNECTED 42851 /var/run/docker/libcontainerd/docker-containerd.sock
但当我想访问/var/run/docker.sock
甚至/var/run
我得到
ls:/var/run/:没有该文件或目录
这是某种安全机制,就像被放弃的功能一样吗?我想知道为什么 netstat 可以指向这样的路径,而它甚至不存在?有没有其他方法可以访问这个套接字,因为它必须以某种方式存在?
答案1
在 docker 容器内运行此命令会显示有关整个系统(而不仅仅是容器内)套接字的信息。此信息可通过 netstat 使用的 /proc/net/unix 和其他类似文件获取容器进程的信息。因此,/var/run/...
netstat 的输出是系统上的全局路径,不适用于该特定容器。