可以在Dockerfile里面加入如下内容
RUN yum -y install tar
RUN curl -O -k xxxx/jdk-8u272-linux-x64.tar.gz && \
tar xf jdk-8u272-linux-x64.tar.gz -C /opt && chown -R 1003:1003 /opt/jdk1.8.0_272
RUN ln -s /opt/jdk1.8.0_272/bin/javac /usr/bin/javac
RUN ln -s /opt/jdk1.8.0_272/bin/jar /usr/bin/jar
RUN ln -s /opt/jdk1.8.0_272/bin/java /usr/bin/java
ENV JAVA_HOME=/opt/jdk1.8.0_272/ \
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/jdk1.8.0_272/bin \
CLASSPATH=/opt/jdk1.8.0_272/lib \
LD_LIBRARY_PATH=/opt/jdk1.8.0_272/jre/lib/amd64/jli:/opt/jdk1.8.0_272/lib/amd64/jli
然后使用如下命令登录容器
docker exec --user xxxx -it ${containerid} bash
执行如下命令
java -classpath /opt/jdk1.8.0_272/lib/tools.jar sun.tools.jmap.JMap -dump:format=b,file=heap.bin pid