我在端口1234上有一个在docker容器内运行的服务。 现在我想使用
从同一个docker容器运行此服务的测试`docker exec`
但是我不能这样做,因为我的测试无法连接到它。 作为服务地址,我使用docker $ HOSTNAME变量。
docker exec SERVICE_NAME /bin/sh -c "nc -vz $HOSTNAME 1234"
返回
拒绝连接
docker exec SERVICE_NAME /bin/sh -c "netstat -tulpn"
返回空行
我还尝试了0.0.0.0的$ HOSTNAME
的内容我已经考虑过从其他容器运行测试但由于两个原因对我来说不太方便: 1)为此我使用gitlab ci和docker。 2)我的服务与许多其他码头服务相关联,如mongodb,rabbit等。
谢谢
答案 0 :(得分:1)
假设您的问题是"是否可以从容器执行Docker调用到主机?"
是的,确定有可能!
与Docker守护程序的通信通过套接字。默认情况下,此套接字为unix:///var/run/docker.sock
。经理 - 容器只需要访问(和权限)此套接字。
不是Docker守护程序的选项(我正在查看ou -H, --host
)允许通过TCP
(甚至是fd
)进行通信。
然后您只需要一个Docker客户端(任何Docker API实现)进行通信。