我有一个使用官方 Postgres docker 镜像在 centos 机器上运行的 docker 容器,它无法远程连接。 sudo docker ps | grep postgres
给
492192ff9170 postgres "/docker-entrypoint.s" 2 years ago Up 18 hours 0.0.0.0:5432->5432/tcp postgres
当我尝试
psql -h <server domain name> -p 5432 -U postgres
在另一台机器上,它刚刚打印出来psql: could not connect to server: Operation timed out
Is the server running on host [domain name] ([ip address]) and accepting TCP/IP connections on port 5432?
我做了
sudo iptables -S | grep 5432
在远程服务器上并打印出来-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --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
成功连接到本地实例任何人都可以对这个问题有所了解吗?非常感激。
最佳答案
我遇到了类似的问题,我无法远程连接到 docker 容器中的 postgres db。我敲了两天的头,直到我找到了解决方案。
我通过以下方式配置了我的端口:-p 5438:5432
.换句话说,我试图在我的主机上公开端口 5438。
事实证明,我的主机是安装了 Ubuntu 的 Azure VM。我终于记得在 Azure 门户的“网络”选项卡下,有一个“入站端口规则”列表。
好吧,我需要打开端口 5438。我这样做了,然后 BANG 它开始工作了。 docker config 根本不是问题。
关于postgresql - 无法远程连接到 Postgres Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55268486/