Docker 硬化镜像的构建方式
Docker 硬化镜像通过自动化流水线构建而成,该流水线监控上游源、应用安全更新并发布签名的制品。 本文档解释了基础 DHI 镜像以及 DHI Select 和 DHI Enterprise 订阅所提供的定制镜像的构建流程。
对于 DHI Select 或 DHI Enterprise 订阅用户,基础镜像和定制镜像的自动化安全更新流水线均受 SLA 承诺保障,包括针对关键和高危漏洞的 7 天 SLA。DHI Community 提供安全基线,但不保证修复时间。
构建透明度
Docker 硬化镜像通过公开可用的定义和可验证的证明,为镜像的构建方式提供透明度。
镜像定义
所有镜像定义均在目录仓库中公开提供。
每个镜像定义都是一份声明式 YAML 规范,包含元数据、内容、构建流水线步骤、安全配置和运行时设置。
SLSA 证明
每个 Docker 硬化镜像都包含 SLSA 构建级别 3 证明,提供可验证的构建来源。有关 SLSA 证明及其验证方式的详细信息,请参阅 SLSA。
构建触发
构建会自动开始,无需手动触发。系统会监控变更,并在以下两种情况下启动构建:
上游更新
上游项目的新版本发布、软件包更新或 CVE 修复会触发基础镜像的重建。这些构建会经过质量检查,以确保安全性和可靠性。
监控更新
Docker 持续监控上游项目的新版本发布、软件包更新和安全公告。当检测到变更时,系统会自动将受影响的镜像加入重建队列,并使用符合 SLSA 构建级别 3 的构建系统进行构建。
Docker 使用三种策略来跟踪更新:
- GitHub 发布:监控特定的 GitHub 仓库,当新版本发布时自动更新镜像定义。
- GitHub 标签:跟踪 GitHub 仓库中的标签以检测新版本。
- 软件包仓库:通过 Docker Scout 的软件包数据库监控 Alpine Linux、Debian 和 Ubuntu 的软件包仓库,以检测更新的软件包。
除了显式的上游跟踪外,Docker 还会监控传递依赖。当检测到软件包更新(例如,某个库的安全补丁)时,Docker 会自动识别并重建支持窗口内所有使用该软件包的镜像。
定制变更
对您 OCI 制品定制的更新会触发您定制镜像的重建。
当您使用 DHI Select 或 DHI Enterprise 定制 DHI 镜像时,您的变更会被打包为叠加在基础镜像之上的 OCI 制品。Docker 会监控您的制品仓库,并在您推送更新时自动重建您的定制镜像。
重建过程会获取当前的基础镜像,应用您的 OCI 制品,对结果进行签名,并自动发布。您无需管理构建或为您的定制镜像维护 CI 流水线。
当它们所依赖的基础 DHI 镜像收到更新时,定制镜像也会自动重建,确保您的镜像始终包含最新的安全补丁。
构建流水线
以下部分描述了 Docker 硬化镜像的构建流水线架构和工作流,基于:
基础镜像流水线
每个 Docker 硬化镜像都通过自动化流水线构建:
- 监控:Docker 监控上游源的更新(新版本发布、软件包更新、安全公告)。
- 重建触发:检测到变更时,自动重建开始。
- AI 护栏:AI 系统获取上游差异并使用语言感知检查进行扫描。护栏专注于可能导致重大问题的高杠杆问题,例如颠倒的错误检查、忽略的失败、资源处理不当或可疑的贡献者活动。当发现潜在风险时,它会阻止 PR 自动合并。
- 人工审查:如果 AI 以高置信度识别出风险,Docker 工程师会审查标记的代码,复现问题,并决定采取适当措施。工程师通常会将修复贡献回上游项目,为整个社区改进代码。当修复在上游被接受后,DHI 构建流水线会立即应用补丁以保护客户,同时修复会通过上游发布流程进行。
- 测试与扫描:镜像会经过全面的兼容性和功能性测试,并会进行恶意软件扫描以及密钥和漏洞扫描。
- 签名和证明:Docker 对每个镜像进行签名,并生成证明(SBOM、VEX 文档、构建来源)。
- 发布:签名的镜像发布到 DHI 注册表,证明发布到 Docker Scout 注册表。
- 级联重建:如果任何定制镜像使用此基础镜像,它们的重建会自动触发。
Docker 能快速响应关键漏洞。通过从源代码构建关键组件,而不是等待打包更新,Docker 可以在上游修复后的几天内修补关键和高危 CVE,并发布带有新证明的更新镜像。对于 DHI Enterprise 订阅用户,这种快速响应受关键和高危漏洞的 7 天 SLA 保障。
下图显示了基础镜像的构建流程:
定制镜像流水线
当您使用 DHI Select 或 DHI Enterprise 定制 DHI 镜像时,构建过程得以简化:
- 监控:Docker 监控您的 OCI 制品仓库的变更。
- 重建触发:当您向 OCI 制品推送更新,或基础 DHI 镜像更新时,自动重建开始。
- 获取基础镜像:获取最新的基础 DHI 镜像。
- 应用定制:将您的 OCI 制品应用到基础镜像。
- 扫描:对定制镜像进行恶意软件扫描以及密钥和漏洞扫描。
- 签名和证明:Docker 对定制镜像进行签名,并生成证明(SBOM、VEX 文档、构建来源)。
- 发布:签名的定制镜像发布到 Docker Hub,证明发布到 Docker Scout 注册表。
Docker 自动处理整个过程,因此您无需管理定制镜像的构建。但是,您需要负责测试您的定制镜像并管理由您的 OCI 制品引入的任何 CVE。
下图显示了定制镜像的构建流程: