Docker优化器Skill docker-optimizer

Docker优化器是一个用于分析和优化Dockerfile的专业工具,专注于提升容器镜像的性能、安全性和遵循最佳实践。它通过审查Dockerfile,识别并修复常见问题,如镜像体积过大、安全漏洞、构建效率低下等。核心功能包括推荐使用多阶段构建以减小最终镜像大小,实施层缓存策略以加速构建过程,强制执行安全最佳实践(如使用非root用户运行、避免在镜像中硬编码密钥),以及提供Alpine等轻量级基础镜像建议。此外,它还生成优化的Dockerfile模板和.dockerignore文件,帮助开发者构建更高效、更安全的容器镜像,适用于持续集成/持续部署(CI/CD)、微服务架构和云原生应用部署场景。关键词:Docker优化,容器镜像,安全扫描,多阶段构建,层缓存,CI/CD,云原生,DevOps。

Docker/K8s 0 次安装 0 次浏览 更新于 3/3/2026

name: docker-optimizer description: 审查Dockerfile的最佳实践、安全问题和镜像大小优化,包括多阶段构建和层缓存。适用于处理Docker、容器或部署时使用。 allowed-tools: Read, Grep, Glob, Write, Edit

Docker优化器

分析和优化Dockerfile的性能、安全性和最佳实践。

何时使用

  • 用户正在处理Docker或容器
  • 需要优化Dockerfile
  • 容器镜像过大
  • 用户提及“Docker”、“容器”、“镜像大小”或“部署”

使用说明

1. 查找Dockerfile

搜索:DockerfileDockerfile.**.dockerfile

2. 检查最佳实践

使用特定的基础镜像版本:

# 不好
FROM node:latest

# 好
FROM node:18-alpine

最小化层数:

# 不好
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y git

# 好
RUN apt-get update && \
    apt-get install -y curl git && \
    rm -rf /var/lib/apt/lists/*

按变更频率排序指令:

# 依赖项比代码变更少
COPY package*.json ./
RUN npm install
COPY . .

使用.dockerignore:

node_modules
.git
.env
*.md

3. 多阶段构建

减少最终镜像大小:

# 构建阶段
FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# 生产阶段
FROM node:18-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]

4. 安全问题

不要以root身份运行:

RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

不要在镜像中存储密钥:

# 不好:硬编码密钥
ENV API_KEY=secret123

# 好:使用构建参数或运行时环境变量
ARG BUILD_ENV
ENV NODE_ENV=${BUILD_ENV}

扫描漏洞:

docker scan image:tag
trivy image image:tag

5. 大小优化

使用Alpine镜像:

  • node:18-alpine 对比 node:18 (900MB → 170MB)
  • python:3.11-alpine 对比 python:3.11 (900MB → 50MB)

删除不必要的文件:

RUN npm install --production && \
    npm cache clean --force

使用特定的COPY:

# 不好:复制所有内容
COPY . .

# 好:仅复制所需内容
COPY package*.json ./
COPY src ./src

6. 缓存策略

层缓存优化:

# 首先安装依赖项(如果package.json未更改则缓存)
COPY package*.json ./
RUN npm install

# 复制源代码(变更更频繁)
COPY . .
RUN npm run build

7. 健康检查

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD node healthcheck.js

8. 生成优化的Dockerfile

提供改进版本,包含:

  • 多阶段构建
  • 合适的基础镜像
  • 安全改进
  • 层优化
  • 构建缓存
  • .dockerignore文件

9. 构建命令

高效构建:

# 使用BuildKit
DOCKER_BUILDKIT=1 docker build -t app:latest .

# 从注册表缓存构建
docker build --cache-from myregistry/app:latest -t app:latest .

10. Dockerfile检查清单

  • [ ] 特定的基础镜像标签(非latest
  • [ ] 如果适用,使用多阶段构建
  • [ ] 非root用户
  • [ ] 最小化层数(合并RUN命令)
  • [ ] 存在.dockerignore文件
  • [ ] 镜像中无密钥
  • [ ] 正确的层排序以利用缓存
  • [ ] 使用Alpine或slim变体
  • [ ] 在同一RUN层中清理
  • [ ] 定义HEALTHCHECK

安全最佳实践

  • 定期扫描镜像
  • 使用官方基础镜像
  • 保持基础镜像更新
  • 最小化攻击面(减少包数量)
  • 以非root用户身份运行
  • 尽可能使用只读文件系统

支持文件

  • templates/Dockerfile.optimized:优化的多阶段Dockerfile示例
  • templates/.dockerignore:常见的.dockerignore模式