Docker swarm模式 - 工作节点上没有已发布的端口

时间:2017-02-10 11:04:20

标签: docker docker-swarm

我正在尝试几个VirtualBox上的docker warm模式。 我使用

在管理器上创建了swarm
docker swarm init --advertise-addr 192.168.15.4 --listen-addr 192.168.15.4

加入工作节点非常有效。所以我有一个管理器节点和一个工作节点。然后,我将使用已发布的端口部署两个服务(一个用于mysql的已发布端口3306,另一个用于node.js应用程序的已发布端口3000)。

docker service create --name mysqlbox --publish 3306:3306 mysqlimage
docker service create --name nodebox --publish 3000:3000 nodeimage

现在的问题是,在管理器节点上运行的服务正确地公开了它的端口,因此我可以使用curl docker-manager:3306连接到它,但是在工作节点上运行的服务不会暴露其端口(3000)到主机,所以我无法使用curl docker-worker:3000连接到它。我还读到,如果端口已发布,它应该可以在所有节点上使用,但这不起作用。 使用netstat检查所有内容。在管理器节点上,端口(3306)可见,但在任何其他节点上没有端口3000。 如果管理器节点上的node.js服务和mysql服务在工作节点上运行,则会发生同样的情况。然后node.js服务的端口在管理器节点上发布,我无法连接到工作节点上的mysql服务。

有人可以给我一个提示吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用覆盖网络来允许访问工作节点。

[重叠] https://docs.docker.com/engine/swarm/networking/#create-an-overlay-network