Amazon web services 无法访问Docker swarm中的服务

Amazon web services 无法访问Docker swarm中的服务,amazon-web-services,docker,amazon-ec2,docker-swarm,docker-swarm-mode,Amazon Web Services,Docker,Amazon Ec2,Docker Swarm,Docker Swarm Mode,我对docker很陌生,最近我一直在PluralSight学习Nigel Poulton课程。现在,我开始学习swarm模式的视频教程,并在视频中进行了详细介绍 我有6个EC2实例正在运行。我登录到它们中的每一个并安装了一个docker。每台机器上的发动机版本均为18.09.9。现在,我使用以下命令从机器1初始化swarm模式: sudo docker swarm init--广告地址172.31.41.99:2377--收听地址172.31.41.99:2377 然后我得到了工人和经理的令牌,

我对docker很陌生,最近我一直在PluralSight学习Nigel Poulton课程。现在,我开始学习swarm模式的视频教程,并在视频中进行了详细介绍

我有6个EC2实例正在运行。我登录到它们中的每一个并安装了一个docker。每台机器上的发动机版本均为
18.09.9
。现在,我使用以下命令从机器1初始化swarm模式:

sudo docker swarm init--广告地址172.31.41.99:2377--收听地址172.31.41.99:2377

然后我得到了工人和经理的令牌,并登录到其他机器,最后创建了3个经理和3个工人

这就是我的节点最终的样子:

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
sbh3v850ko7h8f279366fxlt9 *   ip-172-31-41-99     Ready               Active              Leader              18.09.9
f7kqsy3yano3vxo8451mi9z7o     ip-172-31-83-172    Ready               Active              Reachable           18.09.9
jb0innx7l4q56kq4dk9phginw     ip-172-31-90-8      Ready               Active                                  18.09.9
xr3oz2x1wyl3a0bd83i3atjk4     ip-172-31-91-47     Ready               Active                                  18.09.9
ttug67rbhfai88wq2sbulo8dm     ip-172-31-94-197    Ready               Active              Reachable           18.09.9
kkun5zo93zxg4jksryvbeh3mt     ip-172-31-94-220    Ready               Active                                  18.09.9
然后,我使用以下命令创建了服务:

sudo docker服务创建--名称psight1-p 8080:8080--副本5 nigelpoulton/pluralsight docker ci

现在,当我拿起我的机器1的公共DNS并输入
http://ec2-3-89-157-63.compute-1.amazonaws.com:8080
,我收到一个错误,说无法访问该站点

但是,如果我要使用以下命令,而不是使用docker服务:

docker run -d --name web -p 8080:8080 nigelpoulton/pluralsight-docker-ci
然后当我转到
http://ec2-3-89-157-63.compute-1.amazonaws.com:8080
它工作得非常好


我看到有一个类似于这个的。是因为docker 18.09.9中的相同问题还是我遗漏了什么?

您是否创建了覆盖网络并将服务部署到该网络

类似于
docker network create-d my net
的内容来创建覆盖

然后
docker服务创建--networkmynet…
将服务部署到覆盖层

我有些抓狂,因为这已经有一段时间了,但是覆盖网络对于使服务通过任何节点可用的路由网格可能是至关重要的

我的想法是,您可能正在访问集群中没有服务副本的节点

另一种测试方法是使用比节点更多的副本进行部署。这应确保每个节点上至少有一个

或者,部署一个复制副本,找出它在哪个节点上运行,连接到那个节点(浏览器或curl),然后再次尝试命中没有运行复制副本的节点

嗯。也在推特上打电话给你

@奈杰尔普顿