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

我已经阅读了所有关于这个问题的问题,但是这并没有帮助。

主机:Windows 10,运行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“,”EndpointID“:”3f14630554c972ac875cbb384725c6970d1d4d5acfba7cbc05e416b5b22f0056“,”网关“:”172.17.0.1“,以及”SandboxKey“:”/var/run/docker/netns/6ad76f4d6101“,”SecondaryIPAddresses“:null,”SecondaryIPv6Addresses“ “GlobalIPv6Address”:“”,“GlobalIPv6PrefixLen”:0,“IPAddress”:“172.17.0.2”,

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

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

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

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

我终于注意到,在Home标签的IP&Ports部分的Kitematc中,ACCESS 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)