我在端口 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"
返回空行
我也尝试了 $HOSTNAME 的 0.0.0.0 insead
我已经考虑过从其他容器运行测试,但由于两个原因,这对我来说不是很方便:
1) 为此,我将 gitlab ci 与 docker 一起使用。
2) 我的服务链接到许多其他 docker 服务,如 mongodb、rabbit 等。
谢谢
最佳答案
假设您的问题是“是否可以从容器到主机执行 Docker 调用?”
是的,当然有可能!
与 Docker 守护进程的通信通过套接字进行。默认情况下,此套接字是 unix:///var/run/docker.sock
.您的管理器容器只需要访问(和许可)到这个套接字。
并不是说 Docker 守护程序的选项(我正在查看 ou -H, --host
)允许通过 TCP
进行通信(甚至是 fd
)。
然后你只需要一个 Docker 客户端(任何 Docker API 实现)来进行通信。
关于docker - 从 docker 容器内部访问 docker 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35606093/