【计算机工具类-容器和编排Skills】docker-expert 技能
2026/8/7 10:44:47 网站建设 项目流程

高级Docker容器化专家,具备容器优化、安全加固、多阶段构建、编排模式和生产部署策略的全面实践知识,基于当前行业最佳实践。

下载地址

Skill源码下载地址:agentic-awesome-skills/skills/docker-expert at main · sickn33/agentic-awesome-skills · GitHub

技能概述

docker-expert 技能是一个全面的Docker容器化专家技能,提供容器优化、安全加固、多阶段构建、编排模式和生产部署策略的专业知识。它能够分析现有Docker配置,识别问题,并提供基于最佳实践的解决方案。

主要功能

  • Dockerfile优化:层缓存优化、多阶段构建、基础镜像选择
  • 安全加固:非root用户配置、密钥管理、运行时安全
  • Docker Compose编排:服务依赖、网络配置、环境管理
  • 镜像大小优化:Distroless镜像、构建产物优化、层合并
  • 开发工作流集成:热重载、调试配置、测试集成
  • 性能与资源管理:资源限制、构建性能、监控集成

触发条件

在以下情况下应该调用此技能:

  • 需要优化Dockerfile构建性能或镜像大小
  • 需要加固容器安全配置
  • 需要配置Docker Compose编排
  • 需要解决容器网络或部署问题
  • 需要设置开发环境容器化工作流

核心专业领域

1. Dockerfile优化与多阶段构建

# 优化的多阶段构建模式
FROM node:18-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force

FROM node:18-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build && npm prune --production

FROM node:18-alpine AS runtime
RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001
WORKDIR /app
COPY --from=deps --chown=nextjs:nodejs /app/node_modules ./node_modules
COPY --from=build --chown=nextjs:nodejs /app/dist ./dist
USER nextjs
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=10s \
CMD curl -f http://localhost:3000/health || exit 1
CMD ["node", "dist/index.js"]

2. 容器安全加固

# 安全加固容器
FROM node:18-alpine
RUN addgroup -g 1001 -S appgroup && \
adduser -S appuser -u 1001 -G appgroup
WORKDIR /app
COPY --chown=appuser:appgroup package*.json ./
RUN npm ci --only=production
COPY --chown=appuser:appgroup . .
USER 1001

3. Docker Compose编排

version: '3.8'

services:
app:
build:
context: .
target: production
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M

代码审查清单

Dockerfile优化

  • 依赖在源代码之前复制以优化层缓存
  • 多阶段构建分离构建和运行环境
  • 生产阶段仅包含必要的产物
  • 使用.dockerignore优化构建上下文
  • 基础镜像选择适当(Alpine vs distroless vs scratch)

安全加固

  • 创建具有特定UID/GID的非root用户
  • 容器以非root用户运行(USER指令)
  • 密钥正确管理(不在ENV变量或层中)
  • 基础镜像保持最新并扫描漏洞
  • 最小攻击面(仅安装必要包)

常见问题诊断

问题症状解决方案
构建性能问题慢构建(10+分钟),频繁缓存失效多阶段构建、.dockerignore优化、依赖缓存
安全漏洞安全扫描失败、暴露密钥、root执行基础镜像更新、密钥管理、非root配置
镜像大小问题镜像超过1GB、部署缓慢Distroless镜像、多阶段优化、产物选择
网络问题服务通信失败、DNS解析错误自定义网络、健康检查、服务发现

高级问题解决模式

跨平台构建

docker buildx create --name multiarch-builder --use
docker buildx build --platform linux/amd64,linux/arm64 \
-t myapp:latest --push .

构建缓存优化

FROM node:18-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN --mount=type=cache,target=/root/.npm \
npm ci --only=production

密钥管理

FROM alpine
RUN --mount=type=secret,id=api_key \
API_KEY=$(cat /run/secrets/api_key) && \
# 使用API_KEY进行构建过程

最佳实践

  1. 层缓存优化:将依赖安装与源代码复制分离
  2. 非root用户:始终创建特定UID/GID的用户
  3. 健康检查:为生产容器实现健康监控
  4. 资源限制:设置CPU和内存限制防止资源耗尽
  5. 密钥管理:使用Docker secrets而非环境变量
  6. 最小镜像:使用distroless或Alpine基础镜像

转交指南

当问题需要其他专业知识时,推荐转交:

  • Kubernetes编排→ kubernetes-expert
  • CI/CD管道→ github-actions-expert
  • 数据库容器化→ database-expert
  • 基础设施自动化→ devops-expert

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询