Windows 无法使用已发布端口通过本地主机登录Docker postgres映像,但可通过外部IP访问

Windows 无法使用已发布端口通过本地主机登录Docker postgres映像,但可通过外部IP访问,windows,postgresql,docker,docker-for-windows,Windows,Postgresql,Docker,Docker For Windows,我正在尝试一个带有docker postgres映像的简单设置,为我发布一个从本地主机连接的端口 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

我正在尝试一个带有docker postgres映像的简单设置,为我发布一个从本地主机连接的端口

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。

容器有自己的网络,其环回地址不指向主机,反之亦然

  • 您是否尝试了5432以外的其他端口?尝试一些自由港,这样本地博士后和docker博士后之间就不会有冲突。在我看来,您的本地postgre在本地主机5432上的优先级更高,占用了流量,因此您尝试登录到您的本地postgre而不是docker postgre,但是obv。只是一个猜测

  • 您是否检查了虚拟机或用于虚拟化的任何设备中是否允许使用此端口


  • 好的,我不希望容器中的任何内容引用回主机。反之亦然,
    -p 5432:5432
    发布端口以供网络上的任何设备(包括主机)访问,这是否有帮助@Nathan?如果是,那么请接受答案,这样每个人都认为它已经解决了。