![谷歌云平台上的 Docker Swarm 无法运行](https://linux22.com/image/716442/%E8%B0%B7%E6%AD%8C%E4%BA%91%E5%B9%B3%E5%8F%B0%E4%B8%8A%E7%9A%84%20Docker%20Swarm%20%E6%97%A0%E6%B3%95%E8%BF%90%E8%A1%8C.png)
我正在尝试配置一个示例 docker swarm 来在 google cloud platform 上运行我的微服务。问题是,当我按照 pluralsight 中的步骤完成操作后,我无法从我输入的指定端口访问该服务。
我首先通过每个 google 计算引擎的控制台安装了 docker 和 docker swarm。
我如何配置防火墙:
我创建了一个新的防火墙规则,其中指定了过滤范围:0.0.0.0/0目标标签为:docker-manager和docker-worker(我的谷歌云计算引擎实例)。
我如何配置docker swarm manager:
我运行了以下命令:sudo docker swarm init --advertise-addr 10.128.0.2:2377 --listen-addr 0.0.0.0:2377
广告地址是谷歌云引擎中的内部IP
我如何配置 Swarm 工作进程的加入节点:
我运行了以下命令:sudo docker swarm join --token SWMTKN-1-56672dd646yhdx7n1t62tmegakwxbvzc0kgj366otmdu5da086-eis4e8xqqgn1tn5iwxtdoy8he 10.128.0.2:2377 --advertise-addr ens4:2 377 --listen-addr 0.0.0.0:2377
我如何创建这项服务:
我运行了以下命令:sudo docker 服务创建 --name psight1 -p 8080:8080 --replicas 5 nigelpoulton/pluralsight-docker-ci
但是当我通过 google cloud engines 的外部 IP 的 8080 端口访问该服务时,它说无法访问。我不明白。
答案1
防火墙规则包含 3 个主要部分:源、目标和要允许的端口。您提到指定了 0.0.0.0/0 的范围以及目标标签 docker-manager 和 docker-worker。
1) “目标标签”是指网络标签。这不是您的虚拟机实例的名称,该标签是网络标签已将其添加到您的 VM。
2) 您必须打开所有端口或选择指定的端口和/或协议。确保允许端口 8080 上的流量。不建议将源过滤器设置为 0.0.0.0/0 并打开所有端口,因为这存在安全风险。
最后,您可以通过使用内部 IP 地址(而不是外部 IP 地址)从一个实例连接到您的服务来确保服务正常运行,只是为了确保服务配置正确并运行。