Jconsole + Jmx 远程监控docker容器运行
这里以一个springboot项目打包到docker环境来举例
新建一个springboot项目
这个很简单就不多解释了
Dockerfile
FROM openjdk:8-jdk-alpine
EXPOSE 8080 20020
VOLUME /tmp
ADD ./target/*.jar app.jar
CMD java \
-Djava.rmi.server.hostname='127.0.0.1' \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=20020 \
-Dcom.sun.management.jmxremote.rmi.port=20020 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.security.egd=file:/dev/./urandom \
-jar /app.jar
这里主要是看dockerfile的配置,需要注意下
- jmx的端口需要通过EXPOSE 暴露出去
- hostname 需要是外网IP
- 需要指定jmxremote.rmi.port
启动你的docker
docker run -p 8090:8080 -p 20020:20020 springboot-docker
使用Jconsole 连接
命令行输入以下命令
jconsole
然后你会看到一个弹窗
在远程进程中输入你的主机IP+端口号,点击连接即可