无法远程连接到Postgres Docker容器

时间:2019-03-20 19:09:08

标签: postgresql docker centos

我有一个使用官方Postgres docker映像在centos机器上运行的docker容器,它无法远程连接。 sudo docker ps | grep postgres给出

  

492192ff9170 postgres“ /docker-entrypoint.s” 2年前向上18小时0.0.0.0:5432->5432/tcp postgres

当我在另一台机器上尝试psql -h <server domain name> -p 5432 -U postgres时,它刚刚打印出

  

psql:无法连接到服务器:操作超时
      服务器是否在主机[域名]([ip地址])上运行并接受       端口5432上的TCP / IP连接?

我在远程服务器上做了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在本地成功连接到实例,但是仍然无法远程访问它。

有人可以阐明这个问题吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

您是如何启动postgres容器的?

可能您只是缺少容器到主机端口的绑定选项。

尝试将-p 5432:5432添加到您的docker run命令中。这会将容器中的端口5432映射到Docker主机(您的远程服务器)上的端口5432。

有关更多信息,请参见docker networking docs。 另请参见this postgres example