Docker Containerization

Use when working with Docker — development rules

liaosw97 Updated

File contents

核心原则

  • 镜像最小化:使用多阶段构建,只保留运行时必需的文件
  • 安全优先:非 root 用户运行、最小权限、定期扫描漏洞
  • 不可变基础设施:容器一旦构建不应修改,通过替换实现更新
  • 单一职责:每个容器只运行一个进程
  • 标准化输出:日志输出到 stdout/stderr,配置通过环境变量注入

技术栈

  • 核心工具:Docker、Docker Compose、BuildKit
  • 镜像优化:Distroless、Alpine、Scratch 基础镜像
  • 安全扫描:Trivy、Snyk、Clair、Docker Scout
  • 镜像仓库:Docker Hub、AWS ECR、Harbor、GCR
  • 构建工具:Kaniko、Buildah、ko、Earthly

最佳实践

  1. 多阶段构建:分离构建环境和运行环境,减少最终镜像体积
  2. 层优化:合理利用缓存,变化少的层放前面
  3. 基础镜像选择:优先使用官方镜像,指定具体版本而非 latest
  4. 安全配置
    • 使用非 root 用户运行
    • 只读文件系统
    • 禁用特权模式
    • 限制资源使用
  5. 健康检查:实现 HEALTHCHECK 指令,支持优雅关闭
  6. 标签规范:使用语义化版本和 Git commit hash 作为标签

关键约定

  1. Dockerfile 位置:放在项目根目录或 docker/ 目录
  2. 命名规范
    • 镜像名称:{组织}/{项目}:{版本}
    • 容器名称:{项目}-{服务}-{环境}
  3. 必需标签versiondescriptionmaintainergit.commit
  4. 入口点设计:使用 ENTRYPOINT 指定可执行文件,CMD 提供默认参数
  5. 环境变量:敏感信息通过 Docker Secrets 或外部配置管理

liaosw97/awesome-rules-skills/tree/main/plugins/docker/skills/docker-containerization commit 5bf58d74b4

Frequently asked questions

npx skillmds@latest add liaosw97/docker-containerization