Когда у меня есть контейнер Docker прямо на моем хосте, можно без проблем подключиться к нему.Как подключиться с JMX от хоста до контейнера Docker в машине Docker?
У моего хоста есть сеть 192.168.1.0/24, а IP-адрес хоста - 192.168.1.20. Мой контейнер Docker имеет IP-адрес 172.17.0.2. Когда я подключаюсь к 172.17.0.2:1099 из jconsole, он работает.
Когда я помещаю эту службу в машину Докера, с ней невозможно подключиться.
Мое устройство для докеров имеет IP 192.168.99.100, а контейнер в нем имеет IP-адрес 172.17.0.2, но когда я использую jconsole для подключения к 192.168.99.100:1099, он не работает.
Чтобы повторить:
192.168.1.20 --- 172.17.0.2:1099 работы
192.168.1.20 --- (192.168.99.100 --- 172.17.0.2:1099) и подключения к 192.168.99.100:1099 от моего хоста не работает.
Стоит сказать, что я могу получить доступ к сервисам, помещенным в контейнер Docker через внешний IP-адрес устройства Docker, например. это будет работать:
192.168.99.100 --- (192.168.99.100:8080 --- 172.17.0.2:8080)
Но когда я использую JMX это просто не работает.
Это услуга Tomcat. Я имею в сценариях которых начинается экземпляр Tomcat:
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.rmi.port=1099 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=IP address of Docker container
Он запускается библиотекой docker-java ... это не так важно, но когда я делаю «докер-машину ssh» и в ней «docker ps -a», я вижу, что мой контейнер имеет эти привязки портов/экспозиции: ad6be9184855 company/tomcat: 8.0.30 0.0.0.0:1099->1099/tcp, 0.0.0.0:8000->8000/tcp, 0.0.0.0:8009->8009/tcp, 0.0.0.0:8080->8080/tcp – stewenson