我有一个码头集装箱运行在一台centos机器上使用官方的Postgres码头图像,它不能被远程连接。sudo docker ps | grep postgres给出
492192ff9170 postgres "/docker-entrypoint.s“2年前上升18小时0.0.0:5432->5432/tcp postgres
当我在另一台机器上尝试psql -h <server domain name> -p 5432 -U postgres时,它只是打印出来
psql:未能连接到服务器:操作超时 服务器是否在主机域名上运行,并在端口5432上接受TCP/IP连接?
我在远程服务器上做了sudo iptables -S | grep 5432并打印出来
-A码头-d 172.17.0.2/32!-i docker0 -o docker0 -p tcp -m --dport 5432 -j ACCEPT
所以看起来port 5432没有被阻塞
在容器/var/lib/postgresql/data/中,
host all all 0.0.0.0/0 md5已添加到pg_hba.conf中,而postgresql.conf指定了listen_addresses = '*'。
尽管我可以使用psql -h localhost -p 5432 -U postgres在本地成功地连接到实例,但它仍然不能被远程访问。
有人能在这个问题上说出点什么吗?非常感谢。
发布于 2019-03-20 20:13:04
你是如何启动postgres容器的?
可能您只是缺少了一个容器到主机端口绑定选项。
尝试将-p 5432:5432添加到您的停靠程序运行命令中。这将将容器中的端口5432映射到Docker主机(远程服务器)上的端口5432。
有关详细信息,请参阅码头联网文档。另见这个postgres示例。
发布于 2021-10-24 15:57:35
我遇到了一个类似的问题,我无法远程连接到码头容器中的postgres db。我绕了两天头,直到我找到了解决办法。
我用以下方式配置了端口:-p 5438:5432。换句话说,我试图在我的主机上公开端口5438。
事实证明,我的主机是安装了Ubuntu的Azure。最后,我记得在Azure门户的“联网”选项卡下,您有一个“入站端口规则”列表。
我需要打开5438港口。我这么做了然后就开始工作了。根本不是码头配置的问题。

https://stackoverflow.com/questions/55268486
复制相似问题