Quando eseguo il contenitore Docker direttamente sul mio host, è possibile connettersi ad esso senza problemi.Come connettersi con JMX dall'host al contenitore Docker nella macchina Docker?
Il mio host ha la rete 192.168.1.0/24 e l'indirizzo IP dell'host è 192.168.1.20. Il mio contenitore Docker ha l'indirizzo IP 172.17.0.2. Quando mi collego a 172.17.0.2:1099 da jconsole funziona.
Quando si inserisce questo servizio nella macchina Docker, non è possibile connettersi ad esso.
La mia macchina Docker ha IP 192.168.99.100 e il contenitore al suo interno ha l'indirizzo IP 172.17.0.2 ma quando uso jconsole per connettersi a 192.168.99.100:1099 non funziona.
di ripeterlo:
192.168.1.20 --- 172.17.0.2:1099 funziona
192.168.1.20 --- (192.168.99.100 --- 172.17.0.2:1099) e la connessione a 192.168.99.100:1099 dal mio host non funziona.
Vale la pena affermare che è possibile accedere ai servizi containerizzati nella macchina Docker tramite l'indirizzo IP esterno della macchina Docker, ad es. questo funzionerà:
192.168.99.100 --- (192.168.99.100:8080 --- 172.17.0.2:8080)
Ma quando lo uso JMX semplicemente non funziona.
È un servizio Tomcat. Ho questo negli script che inizia esempio 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
È avviato dalla libreria docker-java ... non è così importante, ma quando faccio "docker-machine ssh" e in esso "docker ps -a" posso vedere che il mio contenitore ha questo port binding/esposizioni: 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