标准答案

  1. 使用多阶段构建,把编译工具与最终运行镜像分开,最终镜像只保留运行所需的二进制、依赖和最小系统组件。
  2. 基础镜像和应用镜像都使用固定版本或摘要,并记录源码提交、构建时间和制品校验信息。
  3. 在构建流程中扫描基础层、系统包和应用依赖,发现高风险漏洞时阻止或明确豁免。
  4. 部署引用不可变镜像摘要或明确版本,回滚时能精确回到已验证过的同一制品。

题目解析

镜像越大,拉取、启动和攻击面通常越大;但“最小”不等于删到无法排查。生产调试工具可以通过受控临时容器或独立诊断镜像提供。

latest 的问题不是名字,而是可变性。同一个部署定义在不同时间可能拉到不同内容,这会破坏审计、复现和回滚。

常见误区

  • 把编译缓存、源码和私钥都打进运行镜像。
  • 只扫描应用依赖,不扫描基础镜像和系统包。
  • 用 latest 部署生产,故障后无法确认实际运行了什么版本。

作者信息