【问题标题】:Cannot connect to Docker PostgreSQL container in AWS EC2 instance无法连接到 AWS EC2 实例中的 Docker PostgreSQL 容器
【发布时间】:2017-09-16 17:42:12
【问题描述】:

Docker 新手在这里。

我正在尝试在 AWS EC2 实例中为 PostgreSQL 创建一个 docker 容器。

首先,为了实现持久性,我使用data volume container。这是我用来为我的 PostgreSQL 数据库创建数据卷容器的命令:

docker create -v /var/lib/postgresql/data --name postgres9.3.6-data busybox

然后我运行以下命令来创建 PostgreSQL 容器:

docker run --name postgres9.3.6 \
-p 5432:5432 \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_USER=root \
-e POSTGRES_DB=db_name \
-d --volumes-from postgres9.3.6-data postgres:9.3.6

我在本地环境中运行它,然后尝试通过 PostgreSQL 桌面客户端连接到它,它工作正常。我能够连接到存储在本地 PostgreSQL docker 容器中的 db_name。

之后,我在 AWS 中连接到我的一个 EC2 实例。并遵循我上面描述的相同流程。然后返回到 PostgreSQL 桌面客户端并尝试连接到它。但我收到以下错误消息:

连接被拒绝。检查主机名和端口是否正确,以及 postmaster 是否接受 TCP/IP 连接。

我在这里错过了什么?

编辑

我已经检查并将 postgresql.conf 文件中的 listen_addresses 设置为

listen_addresses='*'

并将以下行附加到 pg_hba.conf 文件中:

host all all 0.0.0.0/0 md5

【问题讨论】:

    标签: postgresql amazon-web-services docker amazon-ec2


    【解决方案1】:

    postgresql.conf 和 pg_hba.conf 看起来不错。 docker 运行正确发布 postgresql 端口。检查你的EC2入站规则,可能是5432端口不允许访问。

    【讨论】:

      【解决方案2】:

      你必须编辑postgresql.conf,设置listen_addresses参数为'*':

      listen_addresses = '*'

      也相应地编辑 pg_hba.conf。

      【讨论】:

      • 感谢您的回复,但我检查了 postgresql.conf 和 pg_hba.conf 文件,并且 listen_addresses 已设置为 '*'。
      • 你确定 postgres 服务器已经启动并运行了吗?
      【解决方案3】:

      您还需要提供主机 ID。 通过以下方式登录到 postges 容器 docker exec -it /bin/bash

      打开主机文件,文件的最后一行是主机ID。 该文件在 etc 目录中可用,文件名为 host。

      添加使用主机 ID 而不是 0.0.0.0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-18
        • 2018-01-03
        • 2016-08-24
        • 1970-01-01
        • 2015-12-28
        • 2015-10-19
        • 2016-09-22
        • 1970-01-01
        相关资源
        最近更新 更多