【问题标题】:Is there a way to make a JMX connection, over SSH, to a remote process running inside a docker container?有没有办法通过 SSH 与在 docker 容器内运行的远程进程建立 JMX 连接?
【发布时间】:2019-06-25 05:23:32
【问题描述】:

我正在尝试通过 SSH 隧道与在远程 docker 容器内运行的进程建立 JMX 连接。从 Java Mission Control、VisualVM 或 JConsole 连接超时,我无法连接。

如果我在 JConsole(或任何其他)中直接连接到远程计算机 IP,则建立 JMX 连接。当我使用 SSH 隧道时会出现问题。

我正在建立一个从我的本地机器到远程机器的 SSH 隧道

ssh username@remote-machine-ip -L 9090:127.0.0.1:9090

在 docker 容器中,我公开了 9090 端口,并为 JVM 使用了以下参数:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.rmi.port=9090
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=127.0.0.1
-Djava.rmi.server.useLocalHostname=true

-Djava.rmi.server.hostname我已经尝试使用127.0.0.1,localhost,docker容器主机ip...

在 JConsole 中,我使用 127.0.0.1:9090 进行连接。

在远程机器上运行 tcpdump 我能够捕获一些到达端口 9090 的数据包,但在 JConsole 中它失败并显示“连接失败”。

知道我做错了什么吗?

【问题讨论】:

    标签: docker ssh jmx ssh-tunnel docker-container


    【解决方案1】:

    一切都是正确的……或多或少。 我的本地机器运行 Windows,我正在 Git Bash 上创建 SSH 隧道! 如果我使用 Windows 命令行或 Putty 创建 SSH 隧道,它就可以正常工作...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-09
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2016-04-06
      • 1970-01-01
      相关资源
      最近更新 更多