无法访问主机上服务上已发布的端口

时间:2018-11-09 09:50:03

标签: docker apache-zookeeper docker-swarm docker-networking

docker守护程序在Ubuntu计算机上运行。我正在尝试启动一群动物园管理员。动物园管理员节点本身可以​​互相交谈。但是,从主机看来,我似乎无法访问已发布的端口。

如果我使用-

启动容器

docker run \ -p 2181:2181 \ --env ZOO_MY_ID=1 \ --env ZOO_SERVERS="server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888" \ zookeeper

它就像一种魅力。在我的主机上,我可以说echo conf | nc localhost 2181,而动物园管理员则可以说些什么。

如果我愿意,

docker service create \ -p 2181:2181 \ --env ZOO_MY_ID=1 \ --env ZOO_SERVERS="server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888" \ zookeeper

并运行相同的命令echo conf | nc localhost 2181, 它只是卡住了。我什至没有在终端上收到新提示。

这与Zookeeper官方Docker Hub页面上的Docker Playground预期的一样。所以我希望它也应该适合我。

但是...如果我docker exec -it $container sh然后在其中尝试命令,它将再次起作用。 即使服务的主机也不能访问已发布的端口吗?

在使用覆盖网络时是否缺少一些技巧?

1 个答案:

答案 0 :(得分:0)

尝试改用docket service create --publish 2181:2181

我相信支持该服务的容器不会直接暴露在外,而必须通过Swarm网络进行。

否则,请检查您的服务以检查发布了哪个端口:docker service inspect <service_name>

来源:documentation

相关问题