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
我已经使用 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