从docker容器内部访问docker端口
我有一个服务端口1234docker容器内运行。现在我想运行testing从同一个docker容器使用此服务
`docker exec`
但我不能这样做,因为我的testing无法连接到它。 作为服务地址,我使用docker $ HOSTNAMEvariables。
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
我已经考虑过从其他容器运行testing,但是这对我来说不是很方便,原因有两个:1)我使用gitlab ci和docker。 2)我的服务链接到一些其他docker服务,如mongodb,兔子等
谢谢
假设你的问题是“是否可以从容器执行Docker-call到主机?
是的,确定这是可能的! 与Docker守护进程的通信通过一个套接字。 默认情况下,这个套接字是unix:///var/run/docker.sock
。 你的经理容器只需要访问(和许可)到这个套接字。
不是Docker守护进程的选项(我正在看ou -H, --host
)允许通过TCP
(甚至是fd
)进行通信。
然后您只需要一个Docker客户端(任何Docker API实现)进行通信。