关于 configure-container
用于检查和配置项目容器基础设施的技能,面向维护容器标准的开发团队。它覆盖 Dockerfile、构建工作流、镜像扫描与安全加固,并支持仅检查或自动修复。
主要功能
- 01检查 Dockerfile 与构建工作流
- 02核查多阶段构建和非 root 用户
- 03检查镜像标签与 .dockerignore
- 04配置 Trivy 或 Grype 扫描
- 05检查多平台构建与缓存
- 06支持检查模式和自动修复
适用场景
- 01审计容器基础设施合规性
- 02检查容器构建流水线
- 03在 CI 中加入漏洞扫描
- 04修复容器配置中的标准问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill configure-container安装后在 Claude Code 中输入/configure-container确认已加载。
附带文件REFERENCE.md
详细介绍
/configure:container
根据项目标准检查并配置全面的容器基础设施,重点关注最小化镜像、非 root 用户和安全加固。
适用场景
| 在以下场景使用此技能…… | 在以下场景采用其他方式…… |
|---|---|
| 审核容器基础设施是否合规(Dockerfile、工作流、扫描) | 从头编写 Dockerfile(/configure:dockerfile) |
| 检查多阶段构建、非 root 用户和安全加固 | 配置 Kubernetes 部署(/configure:skaffold) |
| 设置支持 GHCR 和多平台的容器构建工作流 | 对已构建的镜像运行漏洞扫描(直接使用 Trivy CLI) |
验证 .dockerignore、OCI 标签和基础镜像版本 | 为 VS Code 配置 devcontainer 功能 |
| 在 CI 流水线中添加 Trivy/Grype 扫描 | 调试容器运行时问题(system-debugging agent) |
上下文
- Dockerfile:!
find . -maxdepth 2 \( -name 'Dockerfile' -o -name 'Dockerfile.*' -o -name '*.Dockerfile' \) - Docker ignore:!
find . -maxdepth 1 -name '.dockerignore' - 容器工作流:!
find .github/workflows -maxdepth 1 \( -name '*container*' -o -name '*docker*' -o -name '*build*' \) - Devcontainer:!
find .devcontainer -maxdepth 1 -name 'devcontainer.json' - Skaffold:!
find . -maxdepth 1 -name 'skaffold.yaml' - 包文件:!
find . -maxdepth 1 \( -name 'package.json' -o -name 'pyproject.toml' -o -name 'Cargo.toml' -o -name 'go.mod' \) - 项目标准:!
find . -maxdepth 1 -name '.project-standards.yaml'
参数
从命令参数中解析:
--check-only:报告合规状态,不做修改(CI/CD 模式)--fix:自动应用修复,无需提示--component <name>:仅检查指定组件(dockerfile、workflow、registry、scanning、devcontainer)
安全理念
最小化攻击面:镜像越小,漏洞越少。Node.js 使用 Alpine(约 5 MB),Python 使用 slim(约 50 MB)。
默认使用非 root 用户:所有容器都必须以非 root 用户运行。
必须采用多阶段构建:分离构建和运行环境。构建工具和开发依赖不得包含在生产镜像中。
执行
执行此容器基础设施合规性检查:
步骤 1:检测容器相关文件
搜索 Dockerfile、工作流文件、devcontainer 配置和 .dockerignore。根据包文件检测项目类型(frontend、python、go、rust、infrastructure)。
步骤 2:查询最新基础镜像版本
在标记镜像版本过时之前,使用 WebSearch 或 WebFetch 验证当前版本:
- Node.js Alpine 镜像:在 Docker Hub 上检查最新的 LTS Alpine 标签
- Python slim 镜像:在 Docker Hub 上检查最新的 slim 标签
- nginx Alpine:在 Docker Hub 上检查最新的 Alpine 标签
- GitHub Actions:在发布页面上检查最新的 action 版本
- Trivy:检查 aquasecurity/trivy-action 的发布版本
第 3 步:分析各个组件
根据标准检查各个组件:
Dockerfile 标准:
| 检查项 | 标准 | 严重级别 |
|---|---|---|
| 是否存在 | 容器化项目必需 | 缺失则 FAIL |
| 多阶段构建 | 必需(构建阶段 + 运行阶段) | 缺失则 FAIL |
| HEALTHCHECK | K8s 探针必需 | 缺失则 FAIL |
| 非 root 用户 | 必需(不可选) | 缺失则 FAIL |
| .dockerignore | 必需 | 缺失则 WARN |
.dockerignore Dockerfile* | 使用 glob 从上下文中排除所有 Dockerfile 变体 | 仅有 Dockerfile 则 WARN |
| 基础镜像版本 | 最新稳定版(检查 Docker Hub) | 版本过旧则 WARN |
| 精简基础镜像 | Node 使用 Alpine,Python 使用 slim | 镜像臃肿则 WARN |
基础镜像标准(报告前请确认最新版本):
| 语言 | 构建镜像 | 运行镜像 | 目标大小 |
|---|---|---|---|
| Node.js | node:24-alpine(LTS) | nginx:1.27-alpine | < 50MB |
| Python | python:3.13-slim | python:3.13-slim | < 150MB |
| Go | golang:1.23-alpine | scratch 或 alpine:3.21 | < 20MB |
| Rust | rust:1.84-alpine | alpine:3.21 | < 20MB |
安全加固标准:
| 检查项 | 标准 | 严重级别 |
|---|---|---|
| 非 root USER | 必需(创建专用用户) | 缺失则 FAIL |
| 只读文件系统 | --read-only 或 RO 注解 | 缺失则 INFO |
| 禁止提权 | --security-opt=no-new-privileges | 缺失则 INFO |
| 丢弃 capabilities | --cap-drop=all + 显式 --cap-add | 缺失则 INFO |
| 镜像中不得包含机密 | 不得使用包含敏感数据的 ENV | 发现则 FAIL |
构建工作流标准:
| 检查项 | 标准 | 严重级别 |
|---|---|---|
| 工作流是否存在 | container-build.yml 或类似文件 | 缺失则 FAIL |
| checkout action | v4+ | 版本较旧则 WARN |
| build-push-action | v6+ | 版本较旧则 WARN |
| 多平台 | linux/amd64,linux/arm64 | 缺失则 WARN |
| 构建缓存 | 启用 GHA 缓存 | 缺失则 WARN |
| 安全扫描 | 工作流中使用 Trivy/Grype | 缺失则 WARN |
id-token: write | 配置 provenance/SBOM 时必需 | 缺失则 WARN |
| 缓存范围 | 多镜像构建时显式设置 scope= | 缺失则 WARN |
| 扫描器固定版本 | Trivy/Grype action 通过 SHA 固定版本(而非 @master) | 未固定则 WARN |
容器标签标准(GHCR 集成):
| 检查项 | 标准 | 严重级别 |
|---|---|---|
org.opencontainers.image.source | 必需——链接到仓库 | 缺失则 WARN |
org.opencontainers.image.description | 必需——软件包描述 | 缺失则 WARN |
org.opencontainers.image.licenses | 必需——SPDX 许可证 | 缺失则 WARN |
如需详细检查 Dockerfile,请运行 /configure:dockerfile。
第 4 步:生成合规报告
打印格式化的合规报告:
Container Infrastructure Compliance Report
==============================================
Project Type: frontend (detected)
Component Status:
Dockerfile PASS
Build Workflow PASS
Registry Config PASS
Container Scanning WARN (missing)
Devcontainer SKIP (not required)
.dockerignore PASS
Dockerfile Checks:
Multi-stage 2 stages PASS
HEALTHCHECK Present PASS
Base images node:22, nginx PASS
Build Workflow Checks:
Workflow container-build.yml PASS
checkout v4 PASS
build-push-action v6 PASS
Multi-platform amd64,arm64 PASS
GHA caching Enabled PASS
Container Labels Checks:
image.source In metadata-action PASS
image.description Custom label set PASS
image.licenses Not configured WARN
Recommendations:
- Add org.opencontainers.image.licenses label to workflow
- Add Trivy or Grype vulnerability scanning to CI
Overall: 2 warnings, 1 info
如果使用 --check-only,请在此处停止。
第 5 步:应用修复(如果使用 --fix 或用户确认)
- 缺少 Dockerfile:运行
/configure:dockerfile --fix - 缺少构建工作流:根据 REFERENCE.md 中的模板创建
- 缺少扫描:添加 Trivy 扫描作业
- 缺少 .dockerignore:根据 REFERENCE.md 创建标准 .dockerignore
- 操作版本过旧:更新版本号
第 6 步:更新标准跟踪
更新 .project-standards.yaml:
components:
container: "2025.1"
dockerfile: "2025.1"
container-workflow: "2025.1"
有关详细模板(Dockerfile、工作流、devcontainer、.dockerignore),请参阅 REFERENCE.md。
Agentic 优化
| 上下文 | 命令 |
|---|---|
| 快速合规性检查 | /configure:container --check-only |
| 自动修复所有问题 | /configure:container --fix |
| 仅检查 Dockerfile | /configure:container --check-only --component dockerfile |
| 仅检查工作流 | /configure:container --check-only --component workflow |
| 仅检查扫描 | /configure:container --fix --component scanning |
| 查找所有 Dockerfile | find . -maxdepth 2 \( -name 'Dockerfile' -o -name 'Dockerfile.*' \) 2>/dev/null |
标志
| 标志 | 描述 |
|---|---|
--check-only | 报告状态,不提供修复建议 |
--fix | 自动应用修复 |
--component <name> | 仅检查指定组件(dockerfile、workflow、registry、scanning、devcontainer) |
组件依赖
Container Infrastructure
├── Dockerfile (required)
│ └── .dockerignore (recommended)
├── Build Workflow (required for CI/CD)
│ ├── Registry config
│ └── Multi-platform builds
├── Container Scanning (recommended)
│ └── SBOM generation (optional)
└── Devcontainer (optional)
└── VS Code extensions
注意事项
- 多平台构建:对 M1/M2 Mac 开发者和 ARM 服务器至关重要
- GHCR:对于托管在 GitHub 上的项目,首选 GitHub Container Registry
- Trivy:推荐用于全面检测漏洞的扫描器
- Alpine 与 Slim:Node.js/Go/Rust 使用 Alpine。Python 使用 slim(Debian)(存在 musl 兼容性问题)
- 必须使用非 root 用户:生产环境中绝不要以 root 身份运行容器
- 固定版本:始终使用具体的版本标签,绝不要使用
latest
另请参阅
/configure:dockerfile- Dockerfile 专属配置/configure:workflows- GitHub Actions 工作流配置/configure:skaffold- Kubernetes 开发配置/configure:security- 安全扫描配置/configure:all- 运行所有合规性检查container-development技能 - 容器最佳实践ci-workflows技能 - CI/CD 工作流模式