2017-05-08 34 views
0

我已經使用Docker鏡像在本地設置了NuoDB。 它工作正常,我可以訪問數據庫控制檯並通過訪問http://localhost:8888/explorer.jsp運行查詢。 但是,當我試圖連接到使用JDBC數據庫我得到錯誤:Docker for MacOS上的NuoDB設置。連接到NuoDB失敗。 [08S01]無法連接到任何主機

Connection to NuoDB failed. [08S01] Could not connect to any host [localhost]. Errors are [java.io.IOException: Operation time out (Connection time out), /172.17.0.3:48006]

據我瞭解我已經成功地通過localhost:48004連接到NuoDB經紀人。並且在代理將我引向數據庫節點地址172.17.0.3:48006之後,其中172.17.0.3是由於官方documentation中描述的限制而無法從主機訪問的運行碼頭容器的IP。

我的問題是如何連接到數據庫?有沒有解決方法?

這裏是我的ENV:
多克爾版本17.03.1策,建立c6d412e
我通過命令運行容器:
docker run -d --privileged=true -p 48004:48004 -p 48005:48005 -p 48006:48006 -p 9001:9001 -p 8888:8888 nuodb-test
Dockerfile和NuoDB安裝程序可以在我的github repo中找到。

在此先感謝。

回答

0

我弄清楚了這個問題。 接下來是解決方案。 1)設置Docker Toolbox。它配備了VirtualBox VM,您將能夠使用虛擬機IP地址連接到數據庫。

下面描述了一組命令來運行下的NuoDB Docker Toolbox
2)運行eval $(docker-machine env default)切換到Docker Toolbox。
切換回Docker for MacOS運行unset ${!DOCKER_*}

3)啓動容器選項--network=host -e BROKER_ALT_ADDR=$(docker-machine ip)
在我的情況完全命令是:
docker run -d --privileged=true --network=host -e BROKER_ALT_ADDR=$(docker-machine ip) -p 48004:48004 -p 48005:48005 -p 48006:48006 -p 9001:9001 -p 8888:8888 nuodb-test

4)使用docker-machine ip命令來獲取默認的搬運工機器的IP地址。現在你可以通過這個IP連接了。 JDBC連接字符串示例:jdbc:com.nuodb://192.168.99.100/test其中192.168.99.100是碼頭機IP地址。

您還可以通過IP http://192.168.99.100:8888/連接到數據庫管理中心。

欲瞭解更多信息,請閱讀docs

相關問題