使用JVisualVM监控Docker上的Glassfish 4

我无法将JVisualVM连接到在Docker上运行的Glassfish。 我正在使用玻璃鱼夜间图像 ,我正在暴露端口8686.在启动Glassfish正在logging以下内容:

JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://55bbdd404578:8686/jndi/rmi://55bbdd404578:8686/jmxrmi 

我的docker主机的IP是192.168.99.100,我可以通过端口8686的telnet连接。

我使用的服务URL是service:jmx:rmi://192.168.99.100:8686/jndi/rmi://192.168.99.100:8686/jmxrmi ,我传递安全凭证,但无法连接。 我错过了什么吗?

与同样的问题挣扎。

将以下内容添加到server-config – > jvm-settings – > JVM选项

 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port='your JMX port' -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname='IP of you docker host' 

其余的和以前一样。

当你看看server.log你会注意到JMX服务暴露为:

 JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://e15295161718:40086/jndi/rmi://e15295161718:40086/jmxrmi 

并且很可能这些configuration条目将e15295161718更改为IP,并且JVisualVM可以连接。 从Ur主机的angular度来看, e15295161718对JVisualVM 来说是垃圾。

Docker文件没有公开端口8686,因此您需要使用带docker run命令的–publish 8686:8686将该端口暴露给主机。 请参阅docker帮助运行泥潭细节。