我有一个使用官方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
在本地成功连接到实例,但是仍然无法远程访问它。
有人可以阐明这个问题吗?非常感谢。
答案 0 :(得分:0)
您是如何启动postgres容器的?
可能您只是缺少容器到主机端口的绑定选项。
尝试将-p 5432:5432
添加到您的docker run命令中。这会将容器中的端口5432映射到Docker主机(您的远程服务器)上的端口5432。
有关更多信息,请参见docker networking docs。 另请参见this postgres example。