Docker 镜像优化与安全最佳实践 Print

  • 10

发布于 2023-07-01

优化 Docker 镜像可以加快构建速度、减少磁盘占用并提升安全性。

选择基础镜像

# 优先使用 Alpine 版本
FROM node:18-alpine       # 约 120MB
FROM node:18              # 约 900MB

# 使用 slim 版本
FROM python:3.11-slim     # 约 120MB
FROM python:3.11          # 约 900MB

多阶段构建

# 构建阶段
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# 运行阶段(最终镜像很小)
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]

减小镜像体积

# 合并 RUN 命令减少层
RUN apt-get update &&     apt-get install -y --no-install-recommends pkg1 pkg2 &&     apt-get clean &&     rm -rf /var/lib/apt/lists/*

# 使用 .dockerignore
node_modules
.git
*.md
Dockerfile

安全最佳实践

# 不要以 root 运行
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

# 只复制需要的文件
COPY --chown=appuser:appgroup requirements.txt .

# 使用只读文件系统
docker run --read-only myapp

Was this answer helpful?

« Back