我是Docker和nosql的新手,我在我的Windows机器上创建了一个Oracle Linux VM(ipAddr 192.168.10.2)。
此外,我为kvlite创建了docker容器(在此VM上)并运行我的nosql-container,如下所示:
$ docker run --name nosql-container -p 5000:5000 -d kvlite:latest
后面是以下命令:
$ docker exec -it nosql-container bash
#java -jar lib / kvcli.jar -host localhost -port 5000
KV-> connect store -host localhost -port 5000 -name kvstore;
直到这里工作正常,我相信我的kvlite Docker容器运行良好。
现在我需要从我的Windows机器创建一个客户端Java程序来访问这个kvlite(在VM上的docker容器中运行) 为了完成,我下载了 kvclient.jar 文件并将其放入我的类路径中。
下面的Java代码片段:
KVStore store = KVStoreFactory.getStore(new KVStoreConfig("kvstore", "192.168.10.2:5000"));
这会引发异常:
oracle.kv.FaultException:无法联系任何RepNode:[192.168.10.2:5000](12.1.4.0.9)
...
引起:java.rmi.UnknownHostException:未知主机:ecfe59938ea4;嵌套异常是:
提前获得任何帮助。
答案 0 :(得分:0)
我在运行nosql-container
时添加了一个param --net = host解决了这个问题$ docker run --name nosql-container --net=host -p 5000:5000 -d kvlite:latest
现在,您可以使用Java客户端代码中的VM主机名代替IPAddress来访问kvlite DB。
KVStore store = KVStoreFactory.getStore(new KVStoreConfig("kvstore", "VMHostname:5000"));