Docker 适用于 MacOS 的 NuoDB 设置。连接到 NuoDB 失败。 [08S01] 无法连接到任何主机

NuoDB setup on Docker for MacOS. Connection to NuoDB failed. [08S01] Could not connect to any host

我已经使用 docker 图像在本地设置了 NuoDB。 它工作正常,我可以通过访问 http://localhost:8888/explorer.jsp 来访问数据库控制台和 运行 查询。 但是当我尝试使用 JDBC 连接到数据库时出现错误:

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 是 运行ning docker 容器的 IP,由于官方描述的限制,该容器无法从主机访问documentation.

我的问题是如何连接到数据库?有什么解决方法吗?

这是我的环境:
Docker 版本 17.03.1-ce,构建 c6d412e.
我 运行 容器通过命令:
docker run -d --privileged=true -p 48004:48004 -p 48005:48005 -p 48006:48006 -p 9001:9001 -p 8888:8888 nuodb-test.
Docker文件和 NuoDB 设置可以在我的 github repo.

中找到

提前致谢。

我搞清楚了这个问题。 接下来是解决方案。

1) 设置 Docker 工具箱。它带有 VirtualBox VM,您将能够使用 VM ip 地址连接到数据库。

下面描述了 Docker 工具箱.
下 运行 NuoDB 的一组命令 2) 运行 eval $(docker-machine env default) 用于切换到 Docker 工具箱。
用于切换回 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 连接字符串示例:jdbc:com.nuodb://192.168.99.100/test 其中 192.168.99.100 是 docker 机器 IP 地址。

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

有关详细信息,请阅读 docs