使用多阶段构建 (Multi-stage builds)
示例:
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
COPY --from=builder /app/myapp /
CMD ["/myapp"]
选择更小的基础镜像
-slim或-alpine版本的基础镜像scratch或distroless合并RUN指令
dockerfile
RUN apt-get update && \
apt-get install -y package && \
rm -rf /var/lib/apt/lists/*使用.dockerignore文件
最小化层数
移除不必要的依赖
使用镜像压缩工具
静态编译应用
dockerfile
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .使用BuildKit特性
DOCKER_BUILDKIT=1)--mount=type=cache缓存依赖语言特定优化
npm ci --only=production或yarn --productionpip install --no-cache-dir和虚拟环境清理包管理器缓存
rm -rf /var/lib/apt/lists/*yum clean allrm -rf /var/cache/apk/*压缩镜像层
docker export和docker import扁平化镜像分析镜像组成
docker history <image>docker inspect <image>dive工具深入分析持续优化
通过综合应用这些方法,通常可以将Docker镜像大小减少50%-90%,显著提高构建和部署效率。