背景:
k8s 集群中,java应用容器中添加即时工具分析诊断arthas、netstat
1.预先下载好arthas-packaging-3.1.1-bin.zip文件,在Dockerfile同目录下,并且重命名为arthas.zip
wget http://repo1.maven.org/maven2/com/taobao/arthas/arthas-packaging/3.1.1/arthas-packaging-3.1.1-bin.zip
mv arthas-packaging-3.1.1-bin.zip arthas.zip
2.netstat工具在alpine下为ospd-netstat,在Dockerfile直接apk add 添加即可
3.以下为Dokcerfile文件(注:需要openjdk,如果是jre的,会缺少dt.jar,tools.jar arthas工具会使用到;需要安装tini工具,因为默认java 应用跑在容器中会是1 pid号,arthas会无法调用)
FROM openjdk:8-jdk-alpine
COPY repositories /etc/apk/
RUN apk add --no-cache mesa-gl \
ttf-freefont \
ospd-netstat \
curl \
tini \
jq \
ttf-dejavu \
tzdata && \
mkdir -p /usr/local/arthas && \
rm -rf /var/cache/apk/*
设置环境变量
ENV TZ=Asia/Shanghai
设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY simhei.ttf /usr/share/fonts/
COPY simkaigb2312.ttf /usr/share/fonts/
COPY simsun.ttc /usr/share/fonts/simsun.ttc
COPY arthas.zip /tmp/
ADD ./health.sh /
RUN unzip /tmp/arthas.zip -d /usr/local/arthas && \
rm -rf /tmp/arthas.zip
4.镜像打包,并推至私有仓库
docker build -t 192.168.3.10:5001/library/javab