我正在开发一个应用程序,并将其作为 Docker 映像发布。我的应用程序由一个可执行文件组成,该文件仅链接到 libc 和 libcrypto。我正在考虑通过静态链接可执行文件并将其放入临时映像中来缩小映像大小。
我的问题来自我的测试。在测试期间,我想确认我的应用程序(它监听多个端口(TCP 和 UDP))是否正常运行。我一直通过 运行来做到这一点cat /proc/net/<file>
。docker exec
但是,使用临时映像,我将无法访问cat
甚至sh
。
我知道在测试期间我可以将 BusyBox 放入容器内。但是,有没有办法只使用 来检查 proc 文件系统docker
?
我试过
docker cp the_container:/proc/net/tcp .
但出现了错误
守护进程的错误响应:在容器 the_container 中找不到文件 /proc/net/tcp
您无法仅使用 来执行此操作
docker
,但您可以在不向容器中注入任何内容的情况下执行此操作。使用nsenter
进入容器网络命名空间,同时仍使用主机挂载命名空间:/proc/net
这将为你提供一个 shell,你可以在其中检查容器的网络配置,包括(和)中的内容/proc/<pid>/net
。