无法通过具有已发布端口的localhost登录到Docker postgres映像,但是可以通过外部IP访问

时间:2018-06-23 06:56:59

标签: windows postgresql docker docker-for-windows

我正在尝试使用docker postgres映像进行简单设置,发布了一个端口供我从localhost连接。

docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password -e POSTGRES_USER=postgres -d postgres

如果我指定docker外部IP,我就可以正常连接:

psql -h 192.1469.99.100 -p 5432 -U postgres -d postgres --password

但是在尝试使用localhost时,密码验证失败:

psql -h localhost -p 5432 -U postgres -d postgres --password
psql: FATAL: password authentication failed for user "postgres"

我需要手动设置一些手动端口转发吗?奇怪的是,它似乎可以正确连接到postgres服务器,只是奇怪地告诉我密码失败。也许我在docker配置上做错了什么?

pg_hba.conf如下:

local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust

主机是Windows 7。

2 个答案:

答案 0 :(得分:1)

  1. 您是否尝试了5432以外的其他端口?尝试一些免费的端口,以便您本地的postgre和docker postgre之间没有冲突。对我来说,您的本地Postgre在localhost:5432上具有更高的prio,占用了流量,因此您尝试登录到本地postgre,而不是docker postgre,但已登录。只是一个猜测。

  2. 您是否检查了虚拟机中是否允许此端口或用于虚拟化的端口?

答案 1 :(得分:0)

容器具有自己的网络,其环回地址不引用主机,反之亦然。