DevOps 生态介绍(十二):docker 优化(压缩镜像包的大小

📅 2026/6/28 18:14:41
DevOps 生态介绍(十二):docker 优化(压缩镜像包的大小
在日常工作中docker build 构建的镜像有时会很大今天这篇文章主要介绍docker build 镜像优化。今天这篇文章会给出案例来前后对比构建的镜像大小差别。Docker 镜像优化好处 减少镜像体积 提升构建速度 降低网络传输时间 提高容器启动速度 Docker优化案例 我这里先上案例下面在详细介绍优化前Dockerfileimage_name :project_server_1:latestFROM ubuntu/jdk:21-24.04_stableLABEL version1.0.1LABEL maintainerzhangsanUSER rootWORKDIR /data/app/RUN apt update -y RUN apt install -y vimRun apt install -y curlRun apt install -y wgetCOPY xxx-server-1.0.0-SNAPSHOT.jar ./EXPOSE 8083 14031 14032 14033 14034 14035优化后Dockerfileimage_name :project_server_2:latestFROM eclipse-temurin:21-jre LABEL version1.0.1LABEL maintainerzhangsanUSER rootWORKDIR /data/app/RUN apt update apt install vim curl wget -y apt-get clean rm -rf /var/lib/apt/lists/*COPY xxx-server-1.0.0-SNAPSHOT.jar ./EXPOSE 8083 14031 14032 14033 14034 14035 查看两个镜像大小Docker优化方法1在第一步FROM 这边更换更小的基础镜像官方镜像通常会提供 -slim 和 -alpine 等瘦身版本 如果是java项目的话可以选择Eclipse Temurin镜像。此镜像是OpenJDK发行版。 2减少镜像层数 RUN 执行的命令最好在一条命令上不然每次都有镜像大小 优化前 RUN apt update -yRUN apt install -y vimRun apt install -y curlRun apt install -y wget 优化后 RUN apt update apt install vim curl wget -y apt-get clean命令docker history image_name 此命令可以看到镜像每层构建的详细命令及每层大小3清理缓存#基础镜像是ubuntuapt-get clean rm -rf /var/lib/apt/lists/*#基础镜像是redhatyum clean all rm -rf /var/cache/yum/*4COPY 时 不需要把无用的文件拷贝进来 我这边环境是java 环境只需要将构建好的jar包copy进来即可配置文件也不需要拷贝进来配置文件在k8s环境中用comfigmap来管理即可 5使用.dockerignore 不管是java后端项目还是前端项目都是构建后拷贝项目文件即可但是比如python项目不需要编译直接靠谱的是整个项目这样就需要用到.dockerignore来忽略一些文件不拷贝进来比如.git logs 之类的无用的文件