SuperAPI AI 工具集

containerization-best-practices

部署与运维

查看项目

更新于 10-15 10:59

技能介绍

用途

该技能面向生产环境的容器与 Docker 工作负载,提供构建高效、安全、可维护容器的策略与操作规范。当用户提出优化 Docker、Docker 最佳实践、容器安全、镜像体积等需求时适用。

主要能力

Dockerfile 最佳实践

  • 层排序:按从最不常变到最常变的顺序排列指令,系统依赖在前,应用依赖其次,源码最后。Docker 自上而下缓存层,变更层以下全部失效。
  • 多阶段构建:将构建时依赖与运行时分离,仅复制所需产物。对静态链接二进制(Go、Rust)可使用 scratch 或 gcr.io/distroless/static-debian12 作为最终阶段,镜像约 2MB。
  • .dockerignore:减小构建上下文并防止密钥泄漏进镜像。
  • 基础镜像选择:node:20 约 350MB(生产避免)、node:20-slim 约 200MB(良好默认)、node:20-alpine 约 50MB(多数应用最佳)、distroless 约 2-20MB(最高安全性)。
  • 版本固定:生产环境绝不使用 latest,固定到补丁版本或使用 digest 实现完全可复现。

安全加固

  • 非 root 用户:Alpine 与 Debian 分别提供创建用户命令,配合 COPY --chown 与 USER 使用。
  • 只读文件系统:通过 --read-only、--tmpfs 与卷挂载实现。
  • 镜像中不含密钥:Dockerfile 指令中的密钥会持久化在层历史中,应使用 BuildKit secrets 或运行时注入。
  • 镜像扫描:trivy、grype、docker scout cves 等工具。
  • 能力丢弃:--cap-drop=ALL --cap-add=NET_BIND_SERVICE。

层缓存优化

  • 先复制清单文件安装依赖,再复制源码,这是最具影响力的缓存规则。
  • BuildKit 缓存挂载:跨构建持久化包管理器缓存(apt、pip、npm)。需启用 export DOCKER_BUILDKIT=1。

健康检查

  • HTTP 检查与 TCP 检查(无需 curl/wget)。
  • Compose 中结合依赖的健康检查,使用 condition: service_healthy。

容器网络

  • Bridge:隔离网络,容器按名称解析。
  • Host:共享主机网络栈,无需端口映射。
  • Overlay:多主机(Swarm)。
  • 用户自定义 bridge 网络上的容器可按容器名进行 DNS 解析,默认 bridge 网络不提供此功能。

卷管理

  • 命名卷:Docker 管理,持久化数据。
  • 绑定挂载:主机目录,适合开发。
  • tmpfs:内存中,适合密钥/临时数据。
  • 卷备份方法。

日志最佳实践

  • 应用应写入 stdout/stderr,绝不写入容器内文件。
  • JSON 文件驱动带轮转、Syslog 驱动。
  • 可在 daemon.json 中设置默认值。

资源限制

  • 内存、CPU、pids 限制。
  • 内存与 swap 组合。
  • CPU shares(相对权重,默认 1024)。
  • Compose 资源限制与 ulimits。

调试容器

  • docker exec、logs、inspect、stats、history、cp 等命令。
  • 调试崩溃容器与网络调试方法。

生产模式

  • 优雅关闭与信号处理:容器停止时收到 SIGTERM,应用必须处理,否则宽限期(默认 10s)后 Docker 发送 SIGKILL。始终使用 exec 形式使应用成为 PID 1。
  • 使用 Tini 作为 PID 1 回收僵尸进程并转发信号。
  • 停止宽限期配置。
  • 镜像体积缩减:多阶段构建、Alpine 或 distroless、合并 RUN 命令、同层移除缓存、使用 --no-install-recommends 或 --no-cache。
  • 编排考量:标签与元数据、Docker Compose 生产栈、镜像仓库操作(tag、cosign 签名、清理)。

使用方式

该技能以文档形式提供上述实践与代码示例,用户可依据具体场景查阅对应章节并应用其中的 Dockerfile 片段、命令行参数与 Compose 配置。

适用场景

  • 优化 Docker 镜像体积与构建速度
  • 提升容器安全性
  • 编写生产级 Dockerfile 与 Compose 配置
  • 排查容器运行、网络、资源问题
  • 实施容器日志、健康检查与优雅关闭

限制

资料未提供该技能的具体安装方式、收费模式、平台支持范围或效果保证等信息。