从Windows Docker主机连接到dockerized postgres

时间:2019-07-11 16:05:00

标签: windows postgresql docker

我的设置是安装了Postgres(不是数据库,只有命令行工具)的Windows 10 Pro计算机上的Docker for Windows(版本18.09.2)。

我使用

从docker hub运行官方的postgres映像。
docker run -it -v D:/postgres:/home/dump --name some_postgres -e POSTGRES_PASSWORD=root -d postgres

然后我可以通过

进行连接
docker exec -it <docker-id> bash

并运行

psql -U postgres

一切正常。现在,我想从主机进行连接。我打电话

psql -h <local-ip> -U postgres

得到

psql: could not connect to server: Connection refused (0x0000274D/10061)
        Is the server running on host "192.168.116.74" and accepting
        TCP/IP connections on port 5432?

我非常确定,可以访问该数据库。因为如果我更改IP,我会收到

psql: could not connect to server: Connection timed out (0x0000274C/10060)
        Is the server running on host "192.168.116.11" and accepting
        TCP/IP connections on port 5432?

有人知道如何解决此问题吗?还是我做错了?

1 个答案:

答案 0 :(得分:0)

要从主机连接到容器,必须将端口发布到主机。这是使用端口发布和-p选项完成的:

docker run -it -v D:/postgres:/home/dump --name some_postgres -p 5432:5432 -e POSTGRES_PASSWORD=root -d postgres

注意-p选项。现在,当您尝试连接到本地主机上的端口5432时,流量将被重定向到容器的端口5432