Docker镜像优化方案

发布时间:2026/5/27 5:29:54

Docker镜像优化方案 镜像优化方案镜像优化策略选择最精简的基础镜像减少镜像的层数清理镜像构建的中间产物具体实施方法减小镜像体积拉取快、存储省、传输快提升构建速度CI 流水线更快增强安全性减少攻击面、漏洞数稳定运行避免层过多、权限问题镜像优化示例方法1.缩减镜像层[rootserver1 docker]# vim Dockerfile[rootserver1 docker]# docker build -t webserver:v2 .[rootdocker-node1 docker]# docker images图一的镜像层RUN太多导致v2的内存也是占比很大 图二只有一个run导致少了100多Mb从而优化了镜像[rootserver1 docker]# docker images webserver方法2.多阶段构建[rootserver1 docker]# vim DockerfileFROM centos:7 AS build ADD nginx-1.23.3.tar.gz /mnt WORKDIR /mnt/nginx-1.23.3 RUN yum install -y gcc make pcre-devel openssl-devel sed -i s/CFLAGS$CFLAGS -g/#CFLAGS$CFLAGS -g/g auto/cc/gcc ./configure --with-http_ssl_module --with-http_stub_status_module make make install cd .. rm -fr nginx-1.23.3 yum clean all ​ FROM centos:7 COPY --frombuild /usr/local/nginx /usr/local/nginx EXPOSE 80 VOLUME [/usr/local/nginx/html] CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;]​[rootserver1 docker]# docker build -t webserver:v3 .​[rootserver1 docker]# docker images webserver方法3.使用最精简镜像使用google提供的最精简镜像下载地址https://github.com/GoogleContainerTools/distroless下载镜像docker pull gcr.io/distroless/base利用最精简镜像构建[rootserver1 ~]# mkdir new [rootserver1 ~]# cd new/ [rootserver1 new]# vim Dockerfile# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ARG TIME_ZONE ​ RUN mkdir -p /opt/var/cache/nginx \ cp -a --parents /usr/lib/nginx /opt \ cp -a --parents /usr/share/nginx /opt \ cp -a --parents /var/log/nginx /opt \ cp -aL --parents /var/run /opt \ cp -a --parents /etc/nginx /opt \ cp -a --parents /etc/passwd /opt \ cp -a --parents /etc/group /opt \ cp -a --parents /usr/sbin/nginx /opt \ cp -a --parents /usr/sbin/nginx-debug /opt \ cp -a --parents /lib/x86_64-linux-gnu/ld-* /opt \ cp -a --parents /usr/lib/x86_64-linux-gnu/libpcre* /opt \ cp -a --parents /lib/x86_64-linux-gnu/libz.so.* /opt \ cp -a --parents /lib/x86_64-linux-gnu/libc* /opt \ cp -a --parents /lib/x86_64-linux-gnu/libdl* /opt \ cp -a --parents /lib/x86_64-linux-gnu/libpthread* /opt \ cp -a --parents /lib/x86_64-linux-gnu/libcrypt* /opt \ cp -a --parents /usr/lib/x86_64-linux-gnu/libssl.so.* /opt \ cp -a --parents /usr/lib/x86_64-linux-gnu/libcrypto.so.* /opt \ cp /usr/share/zoneinfo/${TIME_ZONE:-ROC} /opt/etc/localtime ​ FROM gcr.io/distroless/base-debian11 ​ COPY --frombase /opt / ​ EXPOSE 80 443 ​ ENTRYPOINT [nginx, -g, daemon off;] ​[rootserver1 new]# docker build -t webserver:v4 .​ [rootserver1 new]# docker images webserver总结Docker 镜像优化核心围绕体积、速度、安全、性能四大维度关键要点如下体积瘦身优先用 alpine/distroless 轻量基础镜像通过多阶段构建分离构建 / 运行环境合并 RUN 指令并清理依赖缓存配合 .dockerignore 排除无用文件。构建提速按 “变化少的在前、变化多的在后” 编排镜像层以利用缓存启用 BuildKit 并行构建CI 中复用镜像缓存。安全与性能非 root 用户运行镜像使用官方可信基础镜像并定期扫描漏洞减少镜像层数避免容器内动态编译 / 下载提升运行效率。关键点回顾核心手段多阶段构建 轻量基础镜像 层缓存优化是镜像优化的 “三板斧”安全底线禁用 root 运行、剔除镜像内无用工具、扫描漏洞工具辅助用 dive 分析镜像冗余、trivy 扫描漏洞、docker-slim 自动瘦身可快速落地优化。

相关新闻