Docker - oracle.kv.FaultException: не удалось связаться с любым RepNode
Я новичок в Docker и nosql, я создал виртуальную машину Oracle Linux (ipAddr 192.168.10.2) на моей машине с Windows.
Далее я создал Docker-контейнер (на этой виртуальной машине) для kvlite и запустил мой nosql-контейнер, как показано ниже:
$ docker run --name nosql-container -p 5000: 5000 -d kvlite: последний
следуют следующие команды:
$ docker exec -it nosql-container bash
# java -jar lib / kvcli.jar -host localhost -port 5000
kv-> connect store -host localhost -port 5000 -name kvstore;
До сих пор это работает нормально, и я считаю, что мой контейнер Docker для kvlite работает и работает нормально.
Теперь мне нужно создать клиентскую Java-программу на моем компьютере с Windows для доступа к этому kvlite (запущенному в 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; Вложенное исключение:
Любая помощь оценена заранее.
1 ответ
Я решил проблему, добавив параметр --net=host при запуске nosql-container
$ docker run --name nosql-container --net=host -p 5000:5000 -d kvlite:latest
Теперь вместо IPAddress вы можете использовать имя хоста виртуальной машины в коде клиента Java для доступа к базе данных kvlite.
KVStore store = KVStoreFactory.getStore(new KVStoreConfig("kvstore", "VMHostname:5000"));