0

我是 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-> 连接存储 -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;嵌套异常是:

提前感谢任何帮助。

4

1 回答 1

0

我通过在运行 nosql-container 时添加参数 --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"));
于 2016-10-26T06:50:38.540 回答