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
答案 0 :(得分:1)
postgresql.conf和pg_hba.conf看起来不错。 docker正确运行postgresql端口。检查您的EC2入站规则,可能不允许访问端口5432。
答案 1 :(得分:0)
您必须编辑postgresql.conf,将listen_addresses参数设置为' *':
listen_addresses =' *'
也相应地编辑pg_hba.conf。
答案 2 :(得分:0)
您还需要提供主机ID。 登录到邮资容器 docker exec -it / bin / bash
打开主机文件,文件的最后一行是主机ID。 该文件位于etc目录中,文件名为host。
添加使用主机ID代替0.0.0.0