在覆盖网络中使用docker swarm节点时,如果从其他主机连接,则会丢失连接

时间:2017-12-24 03:36:42

标签: postgresql docker docker-swarm

使用以下带有docker的命令创建我的服务:

docker service create --mount 
type=bind,src=/tmp/postgres,dst=/var/lib/postgresql/data 
--name dev_db 
--network mynetwork -p 5432:5432 -d postgres

问题是如果我不使用覆盖网络--network,我可以通过使用简单的postgresql客户端从另一台主机连接到这个docker实例:

psql -h (ipofthehost) mydatabase -Umydatabase

但是现在我想从另一台主机连接到它,我收到了这个错误:

psql:无法连接到服务器:连接被拒绝     服务器是否在主机“ipofdehost”上运行并接受     端口5432上的TCP / IP连接?

这告诉我它可能正在运行但却看不到它。 我验证了该服务是否正在运行:

docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                          PORTS
8hr0qwtca230        dev_db              replicated          1/1                 postgres:latest                *:5432->5432/tcp

我用ss验证了服务是否在监听:

State       Recv-Q Send-Q                                               Local Address:Port                                                              Peer Address:Port              
LISTEN      0      128                                                              *:22                                                                           *:*                  
LISTEN      0      100                                                      127.0.0.1:25                                                                           *:*                  
LISTEN      0      128                                                             :::22                                                                          :::*                  
LISTEN      0      128                                                             :::5432                                                                        :::*                  
LISTEN      0      128                                                             :::12376                                                                       :::*                  
LISTEN      0      100                                                            ::1:25                                                                          :::*                  
LISTEN      0      128                                                             :::443                                                                         :::* 

看起来好像正在监听因为行:::5432,但对我而言,它似乎只适用于ipv6连接,那么如何让它来监听ipv4连接?所有我改变了是因为我将该节点连接到覆盖网络,所以我不明白为什么如果我公开端口没有公开发布。

谢谢!

0 个答案:

没有答案