2017-04-20 194 views
2

Docker新手在这里。无法连接到AWS EC2实例中的Docker PostgreSQL容器

我正在尝试在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泊坞窗容器中的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 

回答

0

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

listen_addresses ='*'

也相应地编辑pg_hba.conf。

+0

感谢您的回复,但我已经检查了postgresql.conf和pg_hba.conf文件,并且listen_addresses已经设置为'*'。 – hnroot

+0

你确定postgres服务器已启动并正在运行吗? –

1

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

+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/17198392) – cantSleepNow