无法从 Windows 主机上的 PGAdmin 运行 连接到 Docker 中的 Postgres 运行

Cannot connect to Postgres running in Docker from PGAdmin running on Windows Host

我已经阅读了所有关于此的问题,like this one,但没有帮助。

主持人:Windows10,运行正在使用 VirtualBox 和 PgAdmin。

我已正确设置 Docker 并且 运行 一些容器没有问题。现在我尝试设置 Postgres。我试了两个:

1 https://hub.docker.com/r/paintedfox/postgresql/

2 https://hub.docker.com/_/postgres/

两者都有同样的问题。当我尝试从 PgAdmin 连接时,它说服务器没有监听。

当我运行docker inspect postgres我看到

"NetworkSettings": { "Bridge": "", "SandboxID": "6ad76f4d61017c44f814c5ec7ab9081a650d925a46c2b69902c4f0e5209076ce", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "5432/tcp": null }, "SandboxKey": "/var/run/docker/netns/6ad76f4d6101", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "3f14630554c972ac875cbb384725c6970d1d4d5acfba7cbc05e416b5b22f0056", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2",

我已经尝试将该 IP 地址用作 PGAdmin 中的主机。

我尝试使用 -p 5432:5432 设置容器并连接为 127.0.0.1:5432。

我尝试在 VirtualBox 中为容器设置端口转发。

机器host我也试过了,如Kitematic所示:192.168.99.100

我终于注意到在 Kitematc 中“主页”选项卡的“IP 和端口”部分未设置“访问”URL。

在 Docker 端口下显示“5432/tcp”

所以我点击旁边的 IP 地址并设置它,现在它显示:

192.168.99.100:32768

我将该 IP 和端口放入 PGAdmin,它现在可以连接到容器了。

仅供参考,IP 与返回的 IP 相同:

docker-machine ip default

如果您 运行 您的容器从命令行更改您的 运行-命令,如下所示:

docker run -p 32768:5432 my-postgres

现在您可以通过 <mapped-ip>:32768 连接到您的 postgres(在我的例子中,映射的 IP 是 192.168.99.100)