docker镜像优化
docker镜像体积分析

源镜像本来体积为2.5G大小,通过docker save之后镜像体积变得超级大

原因分析


优化示例步骤
FROM 192.168.30.113/library/jdk-ctyun:1.8.0 #设置java运行参数 ENV JAVA_OPTS="-server -Xms4g -Xmx20g -XX:PermSize=4g -XX:MaxPermSize=20g" #设置要运行的jar包名称 ENV JAR_FILE="tlog" #设置程序服务名称 ENV SERVER_NAME="tlog" #设置程序服务端口 ENV SERVER_PORT="8089" #设置存储目录参数 ENV BASE_DIR="/" ENV TEMP_DIR="/opt" ENV TZ=Asia/Shanghai #设置云眼参数 ENV PINPOINT_PACK="pinpoint-agent-2.3.3.zip" ENV PINPOINT_FILE="pinpoint-bootstrap-2.3.3.jar" ENV PINPOINT_DIR="pinpoint-agent-2.3.3" ENV AGENTLOCAL="/pinpoint-agent-2.3.3/pinpoint-bootstrap-2.3.3.jar" ENV APPLICATIONNAME="tlog" ENV LICENCE=8431190006 #把包添加到临时目录 ADD ca.crt /ca.crt ADD tlog /opt/tlog ADD pinpoint-agent-2.3.3.zip /opt/pinpoint-agent-2.3.3.zip RUN mkdir $BASE_DIR/$SERVER_NAME && mv $TEMP_DIR/$JAR_FILE $BASE_DIR && mv $TEMP_DIR/$PINPOINT_PACK $BASE_DIR && unzip $BASE_DIR/$PINPOINT_PACK -d $BASE_DIR && rm -fr $TEMP_DIR/* && echo '#!/bin/bash' >> /startup.sh && echo 'AGENTID=`ip addr | grep -o -e "inet [0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}" | grep -v "127.0.0" | grep -o -e "[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}"`' >> /startup.sh && echo 'java $JAVA_OPTS -javaagent:$AGENTLOCAL -Dpinpoint.agentId=$AGENTID-$SERVER_PORT -Dpinpoint.applicationName=$APPLICATIONNAME -Dpinpoint.licence=$LICENCE -jar /$JAR_FILE/lib/TLog.jar' >> /startup.sh && chmod 755 startup.sh WORKDIR /tlog ENV TZ=Asia/Shanghai ENTRYPOINT ["sh","/startup.sh"]
优化Dockerfile 可以减少元数据和中间层镜像

FROM 192.168.30.113/library/jdk-ctyun:1.8.0 # 设置环境变量 ENV JAVA_OPTS="-server -Xms4g -Xmx20g -XX:PermSize=4g -XX:MaxPermSize=20g" \ JAR_FILE="tlog" \ SERVER_NAME="tlog" \ SERVER_PORT="8089" \ BASE_DIR="/" \ TEMP_DIR="/opt" \ TZ="Asia/Shanghai" \ PINPOINT_PACK="pinpoint-agent-2.3.3.zip" \ PINPOINT_FILE="pinpoint-bootstrap-2.3.3.jar" \ PINPOINT_DIR="pinpoint-agent-2.3.3" \ AGENTLOCAL="/pinpoint-agent-2.3.3/pinpoint-bootstrap-2.3.3.jar" \ APPLICATIONNAME="tlog" \ LICENCE=8431190006 # 复制证书和应用程序文件 COPY ca.crt /etc/ssl/certs/ COPY tlog /opt/tlog/ COPY pinpoint-agent-2.3.3.zip /opt/ # 使用单个RUN命令进行设置,减少镜像层数 RUN set -eux; \ mkdir -p "$BASE_DIR/$SERVER_NAME"; \ mv "/opt/$JAR_FILE" "$BASE_DIR"; \ mv "/opt/$PINPOINT_PACK" "$BASE_DIR"; \ unzip "$BASE_DIR/$PINPOINT_PACK" -d "$BASE_DIR"; \ rm -fr /opt/*; \ AGENTID=$(ip addr | grep -o -e "inet [0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}" | grep -v "127.0.0" | grep -o -e "[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}"); \ echo '#!/bin/bash\ java $JAVA_OPTS -javaagent:$AGENTLOCAL -Dpinpoint.agentId=$AGENTID-$SERVER_PORT -Dpinpoint.applicationName=$APPLICATIONNAME -Dpinpoint.licence=$LICENCE -jar /$JAR_FILE/lib/TLog.jar' > /startup.sh; \ chmod 755 /startup.sh # 设置工作目录和入口点 WORKDIR /tlog ENTRYPOINT ["sh", "/startup.sh"]
效果对比



导出本地镜像
docker image prune -af


镜像被正常压缩
docker镜像导出问题




docker save 镜像名称 不等于 docker save 镜像名称:latest
最好在镜像后面添加标签防止发生一些莫名的错误
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/23059987
浙公网安备 33010602011771号