2016-04-05 119 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 你解決了我的問題。 –