Java 无法通过jconsole连接到docker容器中的jmx jar进程

Java 无法通过jconsole连接到docker容器中的jmx jar进程,java,docker,jmx,Java,Docker,Jmx,我试图从docker容器中运行的java进程中检索度量。进程是用以下命令启动的,但尝试通过jconsole作为测试访问它,会导致“连接失败”重试吗 docker run -d --name=process-2-kafka --restart=always -p 22222:22222 -v /var/local/Blogs_Services/ProcessKafaka/:/program -w /program openjdk:8 java -Dcom.sun.management.jmxr

我试图从docker容器中运行的java进程中检索度量。进程是用以下命令启动的,但尝试通过jconsole作为测试访问它,会导致“连接失败”重试吗

docker run -d --name=process-2-kafka --restart=always -p 22222:22222 -v 
/var/local/Blogs_Services/ProcessKafaka/:/program -w /program openjdk:8 
java
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=22222 - 
Dcom.sun.management.jmxremote.ssl=false - 
Dcom.sun.management.jmxremote.authenticate=false -jar testkafka.jar - 
Dcom.sun.management.jmxremote.local.only=false – 
Djava.rmi.server.hostname=192.www.xxx.yy – 
Dcom.sun.management.jmxremote.rmi.port=22222

我在搜索internet后添加了rmi.port和server.hostname,但仍然导致相同的错误。有人能解决这个问题吗?

JMX到容器的连接是出了名的令人沮丧。我建议尝试两件事:

  • jmxremote.port
    jmxremote.rmi.port
    (例如22222和22223)使用一个单独的端口,并在docker中对这两个端口进行端口转发

  • java.rmi.server.hostname
    设置为名称,例如
    dockerhost
    ,并将
    dockerhost
    和承载容器的计算机的IP地址添加到运行docker容器的所有计算机、docker容器本身以及运行jconsole的计算机上的主机文件中。然后,当您尝试使用JMX时,在URL中使用
    dockerhost
    ,而不是IP地址


  • 这些也许不能解决你的问题,但祈祷好运吧

    您是否能够从docker容器的内部和外部远程登录端口?该容器正在其他人的机器上运行。我需要进入那台机器进行检查。给我一分钟。ThanksI可以远程登录到容器外的端口,但不确定如何在容器内操作而不中断其运行过程。因此,这不起作用,但感谢您的建议。