Connect to Windows Postgres from Debian Docker container
我正在Windows 10计算机上运行Postgres,我想从Docker容器连接到它。我遵循了来自许多来源的说明,并且应该可以进行操作,但实际上并不能。
用于创建Docker容器的命令行:
1 | docker run --rm -d --network=host --name mycontainer myimage |
在
1 | listen_addresses = '*' |
在
1 | host ALL ALL 172.17.0.0/16 trust |
在容器的bashshell中,运行:
1 | psql -h 127.0.0.1 |
我得到了错误:
psql: could not connect to server: Connection refused
Is the server running on host"127.0.0.1" and accepting TCP/IP connections on port 5432?
不用说,Postgres肯定在我的计算机上运行,??并且我可以从本地应用程序中查询它。我想念什么?
此功能不适用于DOCKER v18.03及更高版本
答案已经存在-从Docker容器内部,如何连接到计算机的本地主机?
此问题与mysql设置有关,但它也适用于您的情况。
对于DOCKER v18.03及更高版本
使用
https://docs.docker.com/docker-for-windows/networking/#i-cannot-ping-my-containers
您已经发现,
此方案的一个选项可能是将PostgreSql托管在一个容器中。如果使用docker-compose文件部署它们,则应该能够将两个单独的Docker容器(一个用于数据库,另一个用于服务)联网在一起。默认情况下,docker-compose将使用容器名称作为其DNS名称在同一撰写文件中向其他容器公开容器。
您也可以考虑将数据库包含在与服务相同的容器中,但是我认为docker-compose解决方案更好,原因如下:
使用主机的真实IP地址在docker容器中配置连接,或者使用dns名称作为解决方法