【问题标题】:Connecting with JMX using Docker for Mac使用 Docker for Mac 连接 JMX
【发布时间】:2017-08-08 18:04:31
【问题描述】:

我正在努力设置与使用 Docker for Mac 的 Docker 容器中运行的 Tomcat 的 JMX 连接。 我想我了解基础知识,并且在 tomcat/bin 目录中有一个 setenv.sh,如下所示:

CATALINA_OPTS="-Dcom.sun.management.jmxremote=true\
 -Dcom.sun.management.jmxremote.local.only=false\
 -Dcom.sun.management.jmxremote.authenticate=false\
 -Dcom.sun.management.jmxremote.ssl=false\
 -Djava.rmi.server.hostname=185.83.15.228\
 -Dcom.sun.management.jmxremote.port=9999\
 -Dcom.sun.management.jmxremote.rmi.port=9999"

我认为有问题的部分可能是 java.rmi.server.hostname 属性。我已将其设置为主机的 IP,但我也尝试了其他明显的事情。我相信这应该是运行 jconsole 或 jvisualvm 的机器的 IP,但这对我不起作用。

我这样启动容器:

docker run -d -v /Users/timbo/tomcat-jmx.sh:/usr/local/tomcat/bin/setenv.sh -p 8080:8080 -p 9999:9999 tomcat:8.0

所以端口 9999 被暴露。 当我尝试使用 jvisualvm 连接到 localhost:9999(Docker for Mac 将路由到实际上位于 172.17.0.2 上的容器)进行连接时,我收到错误消息: 无法使用服务连接到 localhost:9999:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi

有什么错误提示吗?

【问题讨论】:

    标签: macos tomcat docker jmx


    【解决方案1】:

    好的,我想我最终还是找到了它。将 java.rmi.server.hostname 的值设置为主机的主机名(例如 mymac.local 或主机名返回的任何内容)似乎可以使其正常工作。所有其他设置都正常。

    【讨论】:

      【解决方案2】:

      Docker for Mac 的工作方式有点不同。您映射的端口实际上已映射到它在后台运行的 Linux VM。该虚拟机的 IP 通常为 192.168.99.100。所以你应该尝试连接到192.168.99.100:9999

      要验证你的VM的IP是什么,打开Docker CLI终端并在下面执行

      echo $DOCKER_HOST
      tcp://192.168.99.100:2376
      

      【讨论】:

      • 你说的是docker toolbox / docker machine。 DOCKER_HOST 在 Docker for Mac 中不使用。作者问“Docker for Mac”
      • @AndrewJamesRamirez,谢谢。我正在使用 Toolbox 并且方向有点错误。会更正
      猜你喜欢
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      相关资源
      最近更新 更多