netstat 显示已连接的套接字及其路径,但路径不存在

netstat 显示已连接的套接字及其路径,但路径不存在

我在 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 的输出是系统上的全局路径,不适用于该特定容器。

相关内容