我想在正在运行的 docker 容器中执行 netstat 以查看打开的 TCP 套接字及其状态。但是,在我的一些 docker 容器上,netstat 不可用。有没有办法在不使用 netstat 的情况下,通过一些 docker API 来获取打开的套接字(及其状态,以及它们连接到的 IP 地址(如果有)? (顺便说一句,我的容器使用 docker-proxy - 即不直接桥接)
我想我可以直接查看 /proc 文件系统,但在这一点上,我还不如将 docker cp netstat 放入容器并执行它。我想知道码头工人是否可以为此提供任何设施。
原文由 AdvilUser 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
nsenter
命令在 Docker 容器的网络命名空间内的主机上运行命令。只需获取 Docker 容器的 PID:例如,在我的系统上:
一旦你有了 PID,就用它作为 — 的目标(
-t
)选项的nsenter
。例如,要在容器网络命名空间内运行netstat
:请注意,即使容器没有安装
netstat
这也有效:(
nsenter
是util-linux
包的一部分)