2017-08-08 47 views
0

我正在努力使用Docker for Mac在Docker容器中运行Tomcat的JMX连接。 我想我了解的基础知识,并具有在tomcat/bin目录中setenv.sh看起来像这样:使用适用于Mac的Docker连接JMX

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连接到本地主机:9999(该Docker for Mac将路由到实际上在172.17.0.2的容器)我得到的错误: 无法连接到localhost:9999使用服务:jmx:rmi: /// jndi/rmi:// localhost:9999/jmxrmi

有什么不对的提示?

回答

0

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

要验证什么是你的虚拟机的IP,打开泊坞窗CLI终端并执行以下

echo $DOCKER_HOST 
tcp://192.168.99.100:2376 
+0

您正在谈论码头工具箱/码头机。 DOCKER_HOST未在Docker for Mac中使用。作者询问“Docker for Mac” –

+0

@AndrewJamesRamirez,谢谢。我正在使用工具箱,并有一点错误的方向。将纠正这一点 –

1

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

相关问题