我的设置是安装了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?
有人知道如何解决此问题吗?还是我做错了?
答案 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
。