栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将JMX从主机连接到Docker机器中的Docker容器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将JMX从主机连接到Docker机器中的Docker容器?

我认为问题可能在于

java.rmi.server.hostname
财产的价值。这必须是JMX客户端用于连接到JVM的主机名或IP地址。在第一种情况下,您直接使用来连接到容器
172.17.0.2:1099
,此设置需要设置为
172.17.0.2
。在后一种情况下,您通过docker机器访问容器
192.168.99.100:1099
,则需要将设置设置为
192.168.99.100

在研究非常相似的问题(同时被删除)的过程中,我偶然发现了一个博客条目(同时也被删除了)。尽管它已经很老了,但它让我知道了JMX连接的工作原理:

  1. JMX注册表侦听
    <com.sun.management.jmxremote.port>
    容器的端口
  2. 如果使用JConsole连接到注册表,则注册表将向客户端提供JMX服务URL。
  3. 客户端使用此URL来获取JMX对象

服务URL如下所示

service:jmx:rmi:///jndi/rmi://<java.rmi.server.hostname>:<com.sun.management.jmxremote.rmi.port>/jmxrmi
。那是你的情况
service:jmx:rmi:///jndi/rmi://172.17.0.2:1099/jmxrmi
。由于只能从docker机器内部访问此地址,因此无法从远程连接。在我的问题中,我涉及RMI端口方面的相同问题…

似乎没有针对此问题的开箱即用的解决方案。但是一个可以同时提供JMX端口和容器的环境变量启动外部主机名(或IP),如建议在这里。这些可以在JMX配置中使用:

docker run -p 1099:1099     -e "JMX_HOST=192.168.99.100"     -e "JMX_PORT=1099"     company/tomcat:8.0.30

CATALINA_OPTS="...     -Dcom.sun.management.jmxremote=true     -Dcom.sun.management.jmxremote.port=$JMX_PORT     -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT     -Dcom.sun.management.jmxremote.authenticate=false     -Dcom.sun.management.jmxremote.ssl=false     -Djava.rmi.server.hostname=$JMX_HOST"

不太好,但是应该可以…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号