Docker2026-04-15·8 分钟
Docker 镜像优化实战
介绍 Docker 镜像体积优化、缓存层设计与构建效率提升技巧。
Docker 镜像优化实战
1. 使用更小的基础镜像
alpine、distroless、slim是常见轻量镜像。- 根据语言和运行时需求选择精简版本。
dockerfile
FROM node:20-alpine2. 分层与缓存优化
- 把不常变化的步骤提前。
- 依赖安装、环境准备等独立层优先。
dockerfile
COPY package.json package-lock.json ./
RUN npm ci --production
COPY . ./3. 删除不必要文件
- 通过
.dockerignore过滤源码中的临时和编译产物。 - 不要将测试目录、文档、Git 目录带入镜像。
text
node_modules
.git
.DS_Store
*.log4. 多阶段构建
- 构建阶段和运行阶段分离,避免将开发依赖打包进最终镜像。
dockerfile
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . ./
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
RUN npm ci --production
CMD ["node", "dist/index.js"]5. 运行时最小化
- 只保留运行所需文件。
- 在最终阶段移除构建工具和缓存。
dockerfile
RUN rm -rf /tmp/* /var/cache/apk/*6. 镜像层管理
- 每个
RUN命令会生成新层。 &&合并多个命令,减少层数。
dockerfile
RUN apk add --no-cache git && rm -rf /var/cache/apk/*7. 复用构建缓存
- CI 环境可通过
--cache-from复用已有镜像。
bash
docker build --cache-from myapp:latest -t myapp:1.0.0 .8. 压缩与扫描
- 对镜像进行扫描确保没有敏感信息。
- 若使用 Registry 支持,可启用镜像压缩存储。
9. 常见效果
- 减少镜像体积,提升部署速度。
- 缩短构建时间,降低开发迭代成本。
Docker镜像优化