在Docker for MacOS上设置NuoDB。 连接到NuoDB失败。 无法连接到任何主机

我使用docker镜像在本地build立了NuoDB。 它工作正常,我可以访问数据库控制台并通过访问http://localhost:8888/explorer.jsp运行查询。 但是当我试图连接到数据库使用JDBC我得到错误:

连接到NuoDB失败。 [08S01]无法连接到任何主机[localhost]。 错误是[java.io.IOException:操作超时(连接超时),/172.17.0.3:48006]

据我所知,我已经通过localhost:48004成功连接到NuoDB中介。 而且,代理将数据库节点地址172.17.0.3:48006抛出后,由于官方文档中描述的限制,其中172.17.0.3是运行的Docker容器的IP,由于主机无法访问该容器。

我的问题是如何连接到数据库? 有没有解决办法?

这是我的环境:
Docker版本17.03.1-ce,构buildc6d412e
我通过命令运行容器:
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回购中find。

提前致谢。

我找出这个问题。 接下来的解决scheme。

1)设置Docker Toolbox 。 它带有VirtualBox VM ,您将能够使用虚拟机IP地址连接到数据库。

下面介绍了一组在Docker Toolbox下运行NuoDB的命令。
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命令获取默认的docker机器IP地址。 现在你可以通过这个IP连接。 JDBC连接string示例: jdbc:com.nuodb://192.168.99.100/test其中192.168.99.100jdbc:com.nuodb://192.168.99.100/test机器的IP地址。

您也可以通过IP http://192.168.99.100:8888/连接到数据库pipe理中心。

欲了解更多信息,请阅读文档