Docker群容器无法连接

时间:2019-09-03 18:02:52

标签: docker networking docker-swarm

我有一个带有三个节点的小型docker群。

$ sudo docker node ls
ID                            HOSTNAME                                     STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
jmsidw84mom3k9m4yoqc7rkj0     ip-172-31-a-x.region.compute.internal    Ready               Active                                  19.03.1
qg1njgopzgiainsbl2u9bmux4 *   ip-172-31-b-y.region.compute.internal   Ready               Active              Leader              19.03.1
yn9sj3sp5b3sr9a36zxpdt3uw     ip-172-31-c-z.region.compute.internal   Ready               Active                                  19.03.1

我正在运行三个Redis容器。

$ sudo docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                      PORTS
6j9mmnpgk5j4        redis              replicated          3/3                 172.31.m.n:5000/redis

但是我无法让redis哨兵在他们之间工作-阅读日志似乎好像有连接失败。

只需将它们作为三个独立的Redis实例站起来,我就一直在测试连通性,并且可以从任何主机上的Shell telnet到另一个节点的主机IP,并将其连接到容器上运行的服务。如果我从容器上的外壳执行相同操作,则无法连接。

[centos@172.31.a.x ~]$ telnet 172.31.b.y 6379
Trying 172.31.b.y...
Connected to 172.31.b.y.
Escape character is '^]'.
^CConnection closed by foreign host.
[centos@172.31.a.x ~]$ sudo docker exec -it 4d5abad441b8 sh
/ # telnet 172.31.14.12 6379

然后挂起。同样,我无法从容器内通过telnet到443上的google.com,但可以在主机上。奇怪的是,ping确实从容器中移出了。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

gh。

redis端是一个红色鲱鱼,我现在可以进行调试-我正在考虑telnet默认不在容器(高山linux)上,因此必须有一些连接,但是我无法telnet到它声称正在安装时从其下载的网络服务器端口。

结果证明telnet客户端高山Linux安装的版本有问题-nmap和curl的行为符合预期。