2017-08-08 50 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,或任何由主機名返回的內容)似乎可以使其工作。所有其他設置都可以。

相關問題