使用多阶段构建 (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 --production
pip install --no-cache-dir
和虚拟环境清理包管理器缓存
rm -rf /var/lib/apt/lists/*
yum clean all
rm -rf /var/cache/apk/*
压缩镜像层
docker export
和docker import
扁平化镜像分析镜像组成
docker history <image>
docker inspect <image>
dive
工具深入分析持续优化
通过综合应用这些方法,通常可以将Docker镜像大小减少50%-90%,显著提高构建和部署效率。