构建性能优化

启用 BuildKit

传统构建
120
BuildKit
35
提升 3.4x(来源:Docker 官方基准测试)
# 启用 BuildKit
export DOCKER_BUILDKIT=1
docker build -t myapp .

# daemon.json 全局启用
{
  "features": {
    "buildkit": true
  }
}

并行构建 + 层缓存

# BuildKit 并行构建无依赖的阶段
FROM node:22-alpine AS frontend
WORKDIR /app
COPY frontend/ .
RUN npm ci && npm run build

FROM python:3.13-slim AS backend
WORKDIR /app
COPY backend/ .
RUN pip install -r requirements.txt

# 两个阶段并行构建
FROM nginx:alpine
COPY --from=frontend /app/dist /usr/share/nginx/html
COPY --from=backend /app /app

运行时性能优化

资源限制

# docker run 限制
docker run -d \
  --memory=512m --memory-swap=1g \
  --cpus=1.0 \
  --pids-limit=100 \
  myapp

# Compose 限制
deploy:
  resources:
    limits:
      memory: 512M
      cpus: "1.0"

日志驱动

# 限制日志大小(防止磁盘写满)
logging:
  driver: json-file
  options:
    max-size: "10m"
    max-file: "3"

存储驱动选择

存储驱动适用场景性能
overlay2Linux 4.x+(推荐默认)最优
devicemapper旧内核/CentOS 7较差
btrfs/zfs特定文件系统取决于配置

网络性能优化

DNS 缓存

# 在 daemon.json 中配置 DNS
{
  "dns": ["8.8.8.8", "1.1.1.1"]
}

host 网络模式(高性能场景)

# 绕过 NAT,直接使用宿主机网络栈
docker run -d --network host myapp

# 注意:仅适用于需要极致网络性能的场景
# 牺牲了网络隔离性

镜像拉取优化

镜像加速器

# /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]
}
💡 镜像加速地址会不定期失效。如加速器均不可用,可配置 HTTP 代理或使用云厂商容器镜像服务(阿里云 ACR、腾讯云 TCR)。

多架构构建

# 使用 docker buildx 构建多架构镜像
docker buildx create --name mybuilder --use
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .
💡 使用 slim/alpine 基础镜像可减少拉取量 70-90%。多阶段构建最终镜像通常只有完整镜像的 5-10%。