我已经使用码头图像在本地设置了NuoDB。它工作得很好,我可以访问数据库控制台并通过访问http://localhost:8888/explorer.jsp运行查询。但是,当我试图使用JDBC连接到数据库时,我得到了错误:
连接到NuoDB失败。08S01无法连接到任何主机本地主机。错误是java.io.IOException:操作超时(连接超时),/172.17.0.3:48006
据我所知,我已经通过localhost:48004成功地连接到了localhost:48004代理。在代理将我抛到数据库节点地址172.17.0.3:48006之后,172.17.0.3是运行端口容器的IP,由于官方文档中描述的限制,该容器无法从主机访问。
我的问题是如何连接到数据库?有什么解决办法吗?
这是我的env:
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。
Dockerfile和NuoDB安装程序可以在我的github回购中找到。
提前谢谢。
发布于 2017-05-08 17:00:45
我解决了这个问题。下一个是解决办法。
1)设置码头工具箱。它附带了VirtualBox VM,您将能够使用VM地址连接到DB。
下面描述了在Docker下运行NuoDB的一组命令。
2)运行eval $(docker-machine env default)以切换到Docker。
用于切换回MacOS的Docker,运行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/连接到数据库管理中心。
欲了解更多信息,请阅读文档
https://stackoverflow.com/questions/43848413
复制相似问题