Docker 硬化镜像的构建方式
Docker 硬化镜像通过自动化流水线构建而成,该流水线监控上游源、应用安全更新并发布签名的制品。 本文档解释了基础 DHI 镜像和 DHI Enterprise 定制镜像的构建流程。
对于 DHI Enterprise 订阅用户,基础镜像和定制镜像的自动化安全更新流水线均受 SLA 承诺保障,包括针对关键和高危漏洞的 7 天 SLA。只有 DHI Enterprise 包含 SLA。DHI Free 提供安全基线,但不保证修复时间。
构建触发
构建会自动开始,无需手动触发。系统会监控变更,并在以下两种情况下启动构建:
上游更新
上游项目的新版本发布、软件包更新或 CVE 修复会触发基础镜像的重建。这些构建会经过质量检查,以确保安全性和可靠性。
监控更新
Docker 持续监控上游项目的新版本发布、软件包更新和安全公告。当检测到变更时,系统会自动将受影响的镜像加入重建队列,并使用符合 SLSA 构建级别 3 的构建系统进行构建。
Docker 使用三种策略来跟踪更新:
- GitHub 发布:监控特定的 GitHub 仓库,当新版本发布时自动更新镜像定义。
- GitHub 标签:跟踪 GitHub 仓库中的标签以检测新版本。
- 软件包仓库:通过 Docker Scout 的软件包数据库监控 Alpine Linux、Debian 和 Ubuntu 的软件包仓库,以检测更新的软件包。
除了显式的上游跟踪外,Docker 还会监控传递依赖。当检测到软件包更新(例如,某个库的安全补丁)时,Docker 会自动识别并重建支持窗口内所有使用该软件包的镜像。
定制变更 DHI Enterprise
对您 OCI 制品定制的更新会触发您定制镜像的重建。
当您使用 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 Enterprise
当您使用 DHI Enterprise 定制 DHI 镜像时,构建过程得以简化:
- 监控:Docker 监控您的 OCI 制品仓库的变更。
- 重建触发:当您向 OCI 制品推送更新,或基础 DHI 镜像更新时,自动重建开始。
- 获取基础镜像:获取最新的基础 DHI 镜像。
- 应用定制:将您的 OCI 制品应用到基础镜像。
- 签名和证明:Docker 对定制镜像进行签名,并生成证明(SBOM、VEX 文档、构建来源)。
- 发布:签名的定制镜像发布到 Docker Hub,证明发布到 Docker Scout 注册表。
Docker 自动处理整个过程,因此您无需管理定制镜像的构建。但是,您需要负责测试您的定制镜像并管理由您的 OCI 制品引入的任何 CVE。
下图显示了定制镜像的构建流程: