教程 docker tutorial

构建缓存与性能优化

在构建 Docker 镜像时,合理利用缓存和优化构建流程,可以显著提升构建速度并减小镜像体积。

1. 构建缓存机制

  • Docker 镜像由多层(Layer)组成,每条指令生成一层
  • Docker 会缓存已经构建的层,如果指令及上下文未变化,则直接复用缓存
  • 使用缓存可以加快重建镜像速度

示例:

dockerfile
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt
COPY . /app

`

  • 只有 requirements.txt 变化时才重新执行 pip 安装

2. 优化指令顺序

  • 将不常变化的操作放在前面,常变化的操作放在后面
  • 例如:
dockerfile
# 不常变化
RUN apt-get update && apt-get install -y python3

# 常变化
COPY . /app

3. 多阶段构建(Multi-stage Build)

  • 用于减少最终镜像体积
  • 第一阶段安装依赖或编译,第二阶段只拷贝产物
dockerfile
# 构建阶段
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# 运行阶段
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
  • 优点:

    • 最终镜像更小
    • 不包含构建工具,提升安全性

4. 减少镜像体积

  • 使用轻量基础镜像(如 alpine、slim)
  • 删除临时文件和缓存:
dockerfile
RUN apt-get update && apt-get install -y curl \
    && rm -rf /var/lib/apt/lists/*
  • 使用 .dockerignore 排除无关文件,减少构建上下文

5. 缓存清理与构建加速

  • 清理未使用镜像和卷:
bash
docker system prune -a
  • 使用 BuildKit 提升构建速度:
bash
DOCKER_BUILDKIT=1 docker build -t myapp .

掌握 Docker 镜像缓存机制和性能优化技巧,可以提高构建效率、减少镜像体积,并保证容器部署的快速与稳定。