无法连接Docker + PostgreSQL 9.3

谁可以帮我这个事? 我正在使用Mac OS X El Capitan + Docker。

我的图像的Dockerfile:

https://gist.github.com/andrealmar/bce56f7d8450990333703aa5c4ac8d61

我运行我的容器:

docker run andrealmar/postgresql:9.3 

泊坞窗ps显示我的容器正在运行,我做一个docker检查 ,看看哪个IP地址容器有:

 docker inspect 8e65f4dec821 | grep IPAddress 

输出:

 "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2", 

当我尝试使用psql进行连接时:

 psql -h 172.17.0.2 -U docker docker 

它给我一个超时错误。

 psql: could not connect to server: Operation timed out Is the server running on host "172.17.0.2" and accepting TCP/IP connections on port 5432? 

我也试过这个命令:

 psql -h 172.17.0.2 -p 5432 -d docker -U docker -W 

但同样的超时错误发生….

有谁知道我在这里错过了什么?

干杯,

您正试图连接到容器的“内部”(容器 – 容器)networking。 在OS X上运行时,docker守护进程(和容器)在虚拟机中运行。

如果要从OS X机器访问PostgreSQL数据库,则需要“发布”容器的端口,以便公开访问它们。 例如,运行:

 docker run -d -p 2345:5432 andrealmar/postgresql:9.3 

在主机(虚拟机)上的端口2345上发布容器的端口5432。

要访问,使用虚拟机的IP地址,您可以通过docker-machine获取虚拟机的IP地址(假设虚拟机名称为default );

 docker-machine ip default 192.168.99.100 

然后连接;

 psql -h 192.68.99.100 -p 2345 -U docker docker