我正在尝试几个VirtualBox上的docker warm模式。 我使用
在管理器上创建了swarmdocker 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服务。
有人可以给我一个提示吗?
答案 0 :(得分:0)
您可以尝试使用覆盖网络来允许访问工作节点。
[重叠] https://docs.docker.com/engine/swarm/networking/#create-an-overlay-network