java -jar lib/kvstore.jar ping - ConnectException при использовании IP-адреса

Я создал виртуальную машину Oracle Linux (ipAddr 192.168.10.2) на своей машине с Windows.

На этой виртуальной машине я создал док-контейнер kvlite.

В Dockerfile выдается следующее CMD:

CMD ["java", "-jar", "lib/kvstore.jar", "kvlite"]

Как только контейнер док-станции kvlite был создан, я запустил следующие команды на своей виртуальной машине:

$ docker run --name nosql-container -d kvlite:latest

$ docker exec -it nosql-container bash

В приглашении контейнера bash я пытаюсь пропинговать мой клиент, используя следующую команду (но используя VM IpAddress, а не localhost):

# java -jar lib/kvstore.jar ping -port 5000 -host 192.168.10.2

Это однако бросает исключение

Подобрал _JAVA_OPTIONS: -Djava.security.egd= файл:/dev/./urandom

Не удалось подключиться к реестру в 192.168.10.2:5000 Невозможно подключиться к агенту узла хранения на хосте 192.168.10.2, порт 5000, который может не работать; Вложенное исключение:

java.rmi.ConnectException: в соединении отказано в хосте: 192.168.10.2; Вложенное исключение:

java.net.ConnectException: соединение отказано

Не удается найти топологию магазина: не удалось связаться ни с каким RepNode по адресу: [192.168.10.2:5000]

Но все работает хорошо, когда я использую -host как localhost то есть

# java -jar lib/kvstore.jar ping -port 5000 -host localhost

Чтобы решить эту проблему, я попытался следующее:

  • Я остановил свой док-контейнер kvlite

  • Изменено config.xml ($KVROOT/config.xml) для значения hostname в IpAddress

  • Перезапустил мой контейнер док-станции kvlite, но это не помогло, контейнер не запустился

Затем я попытался воссоздать новый образ докера для выдачи kvlite ниже CMD:

CMD ["java", "-jar", "lib/kvstore.jar", "kvlite", "-host", "192.168.10.2", "-port", "5000"]

Но и здесь, когда я попытался запустить kvlite docker container, он не запустился.

Я даже проверил мой /etc/hosts файл для ввода IpAddress-192.168.10.2,

Любая помощь оценена заранее.

1 ответ

Docker использует собственную виртуальную сеть на виртуальной машине.

Используемый по умолчанию сетевой докер имеет диапазон IP-адресов 172.17.xx, поэтому у запущенного вами контейнера есть собственный IP-адрес в этом диапазоне сети.

Чтобы найти IP вашего типа контейнера ifconfig после входа в Контейнер с

$ docker exec -it nosql-container bash

Вы можете использовать IP-адрес контейнера для адресации контейнера изнутри контейнера.

Если вы хотите получить доступ к процессу из-за пределов контейнера через IP-адрес виртуальной машины, вам нужно указать порт (с -p) при запуске док-контейнера.

$ docker run --name nosql-container -p 5000:5000 -d kvlite:latest

Вы можете найти больше информации о сети Docker по умолчанию здесь.

Альтернативным подходом может быть совместное использование сети WM с вашим контейнером, указав --net = host.

$ docker run --name nosql-container --net=host -d kvlite:latest
Другие вопросы по тегам