2.6 Docker镜像优化技巧:多阶段构建让你的镜像体积减少80%
引言
Docker镜像大小直接影响部署速度和存储成本。通过多阶段构建等优化技巧,可以将镜像体积减少80%以上。本文将详细介绍Docker镜像优化的各种方法和实战技巧。
一、镜像大小问题
1.1 镜像大小的影响
- 拉取时间:镜像越大,拉取时间越长
- 存储成本:占用更多存储空间
- 部署速度:影响容器启动速度
1.2 查看镜像大小
# 查看镜像大小dockerimages# 查看详细大小dockersystemdf-v# 查看镜像层dockerhistorynginx:latest二、多阶段构建
2.1 什么是多阶段构建
多阶段构建允许在一个Dockerfile中使用多个FROM指令,每个FROM开始一个新的构建阶段。
2.2 单阶段 vs 多阶段
单阶段构建(问题):
FROM node:18 WORKDIR /app COPY . . RUN npm install RUN npm run build # 包含构建工具和源代码,镜像很大 CMD ["node", "dist/index.js"]多阶段构建(优化):
# 构建阶段 FROM node:18 AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 运行阶段 FROM node:18-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules COPY package*.json ./ CMD ["node", "dist/index.js"]2.3 Go应用多阶段构建
# 构建阶段 FROM golang:1.21 AS builder WORKDIR /build COPY