Как настроить соединение Java RMI RMI между контейнерами Docker на разных хостах - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть контейнер докера (Имя CON1), работающий на хосте A, этот контейнер является сервером RMI Java, прослушивающим порт 1099. У меня также есть другой контейнер (Имя CON2), на котором выполняется клиент RMI Java на хосте B Когда я подключаюсь к CON1 из CON2 через RMI-порт 1099, он работает нормально:

$ telnet 172.30.34.74 1099
  Trying 172.30.34.74...
  Connected to 172.30.34.74.
  Escape character is '^]'.

Но когда я пытаюсь подключиться через java RMI-клиент, соединение отклоняется, и в сообщении об ошибке отображается другой IP-адрес для CON1. ​​

java.rmi.ConnectException: Connection refused to host: 172.18.0.2; nested exception is: 
java.net.ConnectException: Connection refused (Connection refused)

Хотя я использую 172.30.34.74 для поиска в коде клиента RMI, в сообщении об ошибке отображается другой IP-адрес (172.18.0.2). Когда я запускаю RMI-сервер и RMI-клиент вне док-контейнера, он работает хорошо.

Что я могу проверить, чтобы решить эту ситуацию?

1 Ответ

0 голосов
/ 12 апреля 2019

Я реализовал решение:

  1. Добавьте в командную строку java для запуска сервера RMI аргумент -Djava.rmi.server.hostname=HOST_IP. Где host HOST_IP - это IP-адрес хоста.
  2. Установите для network_mode контейнера значение host. Таким образом, контейнер получит тот же IP, что и хост.
...