在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.100
是jdbc:com.nuodb://192.168.99.100/test
机器的IP地址。
您也可以通过IP http://192.168.99.100:8888/
连接到数据库pipe理中心。
欲了解更多信息,请阅读文档