mcpField
D
docker-optimization

docker-optimization

github.com/pluginagentmarketplace云与 DevOps273 次安装43 周前更新
代码仓库

关于 docker-optimization

面向开发者的 Docker 镜像与容器优化技能,聚焦体积、构建速度和运行性能,并提供基础镜像、缓存、多阶段构建及资源限制的策略、清单和分析命令。

主要功能

  1. 01基础镜像选择
  2. 02层与缓存优化
  3. 03多阶段构建指导
  4. 04运行时资源限制
  5. 05镜像与层分析命令

适用场景

  1. 01缩减容器镜像体积
  2. 02提升 Docker 构建速度
  3. 03设置容器 CPU 和内存限制
  4. 04排查镜像层与缓存问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-docker --skill docker-optimization

安装后在 Claude Code 中输入/docker-optimization确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
config.yaml
optimization-tips.yaml
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
validate.py

详细介绍

Docker 优化技能

涵盖 Docker 镜像和容器的全面优化技巧,包括缩减体积、构建缓存和运行时性能。

用途

使用 2024-2025 年的行业最佳实践,缩减镜像体积、缩短构建时间并优化容器性能。

参数

参数类型必需默认值描述
targetenum否allsize/build/runtime/all
base_imagestring否-当前基础镜像
current_sizestring否-当前镜像体积

优化策略

1. 缩减镜像体积
选择基础镜像
基础镜像体积使用场景
scratch0静态 Go/Rust 二进制文件
distroless2-20MB生产容器
alpine5MB通用场景
slim80-150MB需要 apt 软件包时
full500MB+仅用于开发
# Before: 1.2GB
FROM node:20

# After: 150MB (88% smaller)
FROM node:20-alpine
优化层
# Bad: 3 layers, 150MB
RUN apt-get update
RUN apt-get install -y curl
RUN rm -rf /var/lib/apt/lists/*

# Good: 1 layer, 50MB
RUN apt-get update && \
    apt-get install -y --no-install-recommends curl && \
    rm -rf /var/lib/apt/lists/*
移除不必要的文件
# Clean package manager cache
RUN npm cache clean --force
RUN pip cache purge
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Use .dockerignore
# node_modules, .git, *.md, tests/, docs/
2. 优化构建速度
层缓存策略
# Dependencies first (rarely change)
COPY package*.json ./
RUN npm ci

# Source code last (frequently changes)
COPY . .
RUN npm run build
BuildKit 缓存挂载
# syntax=docker/dockerfile:1
FROM node:20-alpine

# Cache npm packages
RUN --mount=type=cache,target=/root/.npm \
    npm ci

# Cache pip packages
RUN --mount=type=cache,target=/root/.cache/pip \
    pip install -r requirements.txt
并行多阶段构建
# Parallel stages (BuildKit)
FROM node:20-alpine AS deps
COPY package*.json ./
RUN npm ci

FROM deps AS builder
COPY . .
RUN npm run build

FROM deps AS linter
COPY . .
RUN npm run lint
3. 运行时性能
资源限制
services:
  app:
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 512M
        reservations:
          cpus: '0.5'
          memory: 256M
容器调优
# Set memory limits
docker run --memory=512m --memory-swap=512m app

# CPU limits
docker run --cpus=1.5 app

# I/O limits
docker run --device-read-bps=/dev/sda:1mb app

优化检查清单

体积检查清单
  • 是否使用了满足需求的最小基础镜像?
  • 是否实现了多阶段构建?
  • 是否清理了软件包管理器缓存?
  • 是否排除了开发依赖?
  • 是否配置了 .dockerignore?
构建速度检查清单
  • 是否在复制代码前先复制依赖项?
  • 是否启用了 BuildKit?
  • 是否使用了缓存挂载?
  • 是否在可能的情况下并行执行各阶段?
运行时检查清单
  • 是否设置了资源限制?
  • 是否配置了健康检查?
  • 是否使用了非 root 用户?
  • 是否在可能的情况下使用了只读文件系统?

分析工具

# Image size analysis
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

# Layer analysis
docker history <image> --format "{{.Size}}\t{{.CreatedBy}}"

# Deep dive analysis
dive <image>

# Build time analysis
DOCKER_BUILDKIT=1 docker build --progress=plain .

错误处理

常见问题
问题原因解决方案
镜像体积过大未使用多阶段构建实施多阶段构建
构建缓慢层顺序不佳先处理依赖项,再处理代码
缓存未生效构建上下文发生变化使用 .dockerignore
运行时内存不足未设置限制设置内存限制

故障排除

调试检查清单
  • 是否启用了 BuildKit?(DOCKER_BUILDKIT=1)
  • 是否使用了缓存?(检查构建输出)
  • .dockerignore 是否生效?(检查上下文大小)
  • 层是否经过优化?(运行 dive)

用法

Skill("docker-optimization")

相关技能

  • docker-multi-stage
  • dockerfile-basics
  • docker-production

评论

支持 Markdown