2016-04-05 121 views
1

任何人都可以帮我解决这个问题吗?我正在使用Mac OS X El Capitan + Docker。无法连接Docker + PostgreSQL 9.3

Dockerfile对我的形象:

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

我跑我的容器:

docker run andrealmar/postgresql:9.3 

泊坞窗PS表明,我的容器运行,我做了泊坞窗检查看该容器的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 

但是,同样的超时错误发生....

有谁知道我在这里失踪?

干杯,

回答

2

你试图连接到“内部”(容器容器)容器的网络。在OS X上运行时,docker守护程序(和容器)在虚拟机中运行。

如果您想从OS X机器访问PostgreSQL数据库,您需要“发布”容器的端口,以使其可公开访问。例如,运行:

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

发布关于在主机上端口2345的容器(在你的情况下,虚拟机 )的端口5432。

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

docker-machine ip default 
192.168.99.100 

然后连接;

psql -h 192.68.99.100 -p 2345 -U docker docker 
+0

非常感谢你@thaJeztah 你解决了我的问题。 –