Skip to content

容器

容器把应用及其运行依赖封装为可分发制品。OCI 定义镜像与运行时规范,Docker 和 Podman 提供常用构建、运行与管理能力。

从开发到生产

  1. 使用可复现的构建生成镜像。
  2. 以 Commit SHA、版本和 digest 标识镜像。
  3. 生成 SBOM,完成漏洞扫描和签名。
  4. 推送到受控镜像仓库。
  5. 以非 root、资源受限和只读文件系统运行。
  6. 将日志输出到标准输出,并提供健康检查。

构建

  • 使用多阶段构建,只将运行所需文件复制到最终镜像。
  • 固定基础镜像版本;生产部署记录 digest,避免漂移。
  • 使用 .dockerignore 排除 Git、依赖缓存、测试结果和本地 Secret。
  • 合理利用 BuildKit 缓存挂载,避免为了缓存牺牲正确性。
  • 不在 ARGENVCOPY 或镜像历史中保存凭据。

运行

  • 创建专用非 root 用户,避免 --privileged
  • 设置 CPU、内存和进程数限制;处理终止信号并设置停止宽限期。
  • 根文件系统尽量只读,把持久数据放入 Volume 或外部存储。
  • 提供存活、就绪和启动检查,但避免检查本身依赖过多外部服务。
  • 日志写入标准输出/错误,由平台收集;不要无限增长本地日志文件。

Compose 边界

Compose 适合本地开发、集成测试和简单单机服务。生产环境使用时仍需自行解决高可用、调度、Secret、滚动发布、集中日志和备份。

发布检查

  • 镜像能否追溯到 Commit、流水线和 SBOM?
  • 是否仅包含运行依赖,且无高危可利用漏洞?
  • 容器在非 root、只读和资源限制下能否正常运行?
  • 退出、重启和依赖短暂不可用时行为是否符合预期?

Powered by VitePress