无法连接AWS EC2实例中的Docker PostgreSQL容器

6

我是一个Docker新手。

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

首先,为了实现持久性,我使用数据卷容器。下面是我用于创建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。
之后,我ssh到了AWS中的一个EC2实例。并按照上述相同的步骤操作。然后返回到PostgreSQL桌面客户端并尝试连接。但是我收到了以下错误消息:
“连接被拒绝。请检查主机名和端口是否正确,并且postmaster接受TCP / IP连接。”
这里我漏掉了什么?
编辑
我已经检查并设置了postgresql.conf文件中的listen_addresses。
listen_addresses='*'

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

host all all 0.0.0.0/0 md5
3个回答

2

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


0

你需要编辑postgresql.conf文件,将listen_addresses参数设置为'*':

listen_addresses = '*'

同时相应地编辑pg_hba.conf文件。


谢谢回复,但我已经检查了postgresql.conf和pg_hba.conf文件,listen_addresses已经设置为“*”。 - hnroot
你确定 postgres 服务器正在运行吗? - Marc Balmer

0

你需要同时提供主机ID。 登录到PostgreSQL容器中使用 docker exec -it /bin/bash

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

使用主机ID而不是0.0.0.0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接