在覆盖networking中使用docker swarm节点时,如果从另一个主机连接,则会丢失连接

用docker创build我的服务使用以下命令:

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

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

psql -h (ipofthehost) mydatabase -Umydatabase

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

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

这是告诉我,它可能正在运行,但它不能看到它。 我validation了服务是否正在运行:

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

我用ssvalidation了服务是否在监听:

 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连接?,我所改变的是,我连接该节点到覆盖networking,所以我不明白为什么如果我让它暴露的端口不公开提供。

谢谢!