【问题标题】:Can't connect to Postgres Docker container remotely无法远程连接到 Postgres Docker 容器
【发布时间】:2019-08-11 14:28:06
【问题描述】:

我有一个使用官方 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 码头工人 -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在本地成功连接到实例,但仍然无法远程访问它

有人能解释一下这个问题吗?非常感谢。

【问题讨论】:

    标签: postgresql docker centos


    【解决方案1】:

    我遇到了类似的问题,我无法远程连接到 docker 容器中的 postgres db。我摸索了 2 天,直到找到了解决方案。

    我通过以下方式配置了我的端口:-p 5438:5432。换句话说,我试图在我的主机上公开端口 5438。

    事实证明,我的主机是安装了 Ubuntu 的 Azure VM。我终于记得在 Azure 门户的“网络”选项卡下,有一个“入站端口规则”列表。

    好吧,我需要打开端口 5438。我这样做了,然后 BANG 它开始工作了。 docker config 根本不是问题。

    【讨论】:

      【解决方案2】:

      你是如何启动 postgres 容器的?

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

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

      请参阅docker networking docs 了解更多信息。 另见this postgres example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-09
        • 1970-01-01
        • 1970-01-01
        • 2017-06-06
        • 1970-01-01
        • 2019-07-30
        相关资源
        最近更新 更多