在日常工作中,docker build 构建的镜像有时会很大,今天这篇文章主要介绍docker build 镜像优化。今天这篇文章会给出案例来前后对比构建的镜像大小差别。Docker 镜像优化好处:                减少镜像体积                提升构建速度                降低网络传输时间                提高容器启动速度 Docker优化案例:                我这里先上案例,下面在详细介绍优化前Dockerfile:image_name :project_server_1:latestFROM  ubuntu/jdk:21-24.04_stableLABEL version=1.0.1LABEL maintainer="zhangsan"USER 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优化后Dockerfile:image_name :project_server_2:latestFROM eclipse-temurin:21-jre LABEL version=1.0.1LABEL maintainer="zhangsan"USER 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 -y 

        RUN apt install -y vim

        Run apt install -y curl

        Run apt install -y wget    优化后:        RUN apt update  && apt install vim curl wget -y && apt-get clean

        命令:docker history image_name  此命令可以看到镜像每层构建的详细命令及每层大小3:清理缓存#基础镜像是ubuntu:apt-get clean  && rm -rf /var/lib/apt/lists/*#基础镜像是redhatyum clean all && rm -rf /var/cache/yum/*4:COPY 时 不需要把无用的文件拷贝进来    我这边环境是java 环境,只需要将构建好的jar包copy进来即可,配置文件也不需要拷贝进来,配置文件在k8s环境中用comfigmap来管理即可 5:使用.dockerignore     不管是java后端项目还是前端项目都是构建后拷贝项目文件即可,但是比如python项目,不需要编译,直接靠谱的是整个项目,这样就需要用到.dockerignore来忽略一些文件不拷贝进来,比如:.git logs 之类的无用的文件

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐