云原生与容器 · 进阶

Docker 镜像管理

建立镜像来源、摘要、扫描、仓库访问和保留规则,验证制品可拉取、可恢复且清理范围可解释。

CI/CDDocker安全加固自动化

场景目标

建立覆盖来源、摘要、权限、扫描和生命周期的镜像清单,完成一次独立客户端拉取验证及隔离环境备份恢复检查,并产出不误删运行与回退制品的保留计划。

环境要求

登记 Docker Engine/Buildx、Distribution、Trivy 的组织批准版本、镜像架构和存储驱动兼容性,不以浮动 latest 作为部署依据。准备受信任 TLS 证书、DNS、按角色分离的构建与拉取凭据,以及精确限定的仓库管理权限。估算镜像层去重后存储、上传并发、带宽和备份配额,设置构建端磁盘预算。备份需同时覆盖制品存储和恢复所需配置,并先验证隔离恢复;垃圾回收需遵守所选版本关于停止写入或只读模式的要求。240 分钟仅为样本仓库治理验证,不含全量制品迁移、生产清理或跨地域容灾。

参考架构 · 非实时拓扑

制品身份、仓库授权与生命周期架构

镜像从批准来源进入构建端,以摘要关联风险报告和运行引用;Distribution 管理受控推拉,保留计划与独立备份恢复约束后续清理。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

制品身份、仓库授权与生命周期架构:组件关系图镜像从批准来源进入构建端,以摘要关联风险报告和运行引用;Distribution 管理受控推拉,保留计划与独立备份恢复约束后续清理。 Docker 构建端 → 批准的构建来源:读取批准输入;Docker 构建端 → Distribution:推送候选制品;Trivy → Docker 构建端:检查候选镜像;独立测试客户端 → Distribution:只读拉取摘要;TLS 与访问授权 → Distribution:约束推拉与管理;Distribution → 备份与隔离恢复:备份制品与配置;保留与清理清单 → Distribution:审批保留与 GC;独立测试客户端 → 备份与隔离恢复:核验恢复样本;保留与清理清单 → 备份与隔离恢复:确认恢复前提。箭头说明见下方流向解读。
逻辑参考图,仅描述受控仓库治理,不表示已建成高可用镜像平台;授权组件、备份覆盖和清理恢复必须按部署版本验证。

批准的构建来源

数据 / 制品

记录源码提交、基础镜像摘要和目标平台,固定输入同时需要更新与重扫计划,不能无限期冻结风险版本。

全部组件职责 8 个组件
批准的构建来源
记录源码提交、基础镜像摘要和目标平台,固定输入同时需要更新与重扫计划,不能无限期冻结风险版本。
Docker 构建端
构建或拉取候选镜像,排除密钥等无关上下文,记录标签与实际摘要并区分本地缓存和远端制品。工具介绍 Docker 构建端
Trivy
检查候选镜像已知风险并记录工具及漏洞库时间;报告失效、错误或缺少架构覆盖都不能视作安全通过。工具介绍 Trivy
独立测试客户端
不复用构建端缓存和管理员登录状态,按摘要拉取并核对平台与启动行为;测试不连接生产写服务。工具介绍 独立测试客户端
Distribution
保存和分发镜像内容,存储驱动、TLS 入口、认证及动作授权需按所选部署核对。工具介绍 Distribution
TLS 与访问授权
表示仓库实际配置的认证和 token/代理授权职责。基础 htpasswd 不自动提供项目级 RBAC,也不能用匿名写入绕过故障。
保留与清理清单
区分标签、manifest 和 blob,保护线上、回退及多平台引用。候选清理只在备份与 dry-run 验证后审批。
备份与隔离恢复
保存恢复所需制品存储和配置,在隔离仓库恢复样本并按原摘要验证;备份存在不代表可恢复已验收。
流向解读 9 条连接
  1. 1

    Docker 构建端 批准的构建来源

    数据 / 请求 · 读取批准输入

    构建端发起源码或基础镜像读取,返回的内容应能追溯到批准版本与摘要。

  2. 2

    Docker 构建端 Distribution

    数据 / 请求 · 推送候选制品

    使用限定范围的推送身份保存候选镜像,后续分发或发布仍需通过风险与业务判定。

  3. 3

    Trivy Docker 构建端

    观测 / 查询 · 检查候选镜像

    扫描阶段读取候选制品并产出报告,最终仓库摘要需要和受检内容关联核对。

  4. 4

    独立测试客户端 Distribution

    数据 / 请求 · 只读拉取摘要

    独立客户端发起按摘要拉取,镜像层返回客户端,核对平台与启动结果。

  5. 5

    TLS 与访问授权 Distribution

    控制 / 管理 · 约束推拉与管理

    通过实际支持的授权组件限制仓库和动作;错误证书或无权操作应明确失败。

  6. 6

    Distribution 备份与隔离恢复

    数据 / 请求 · 备份制品与配置

    按存储驱动及一致性要求形成可恢复备份,不只复制构建端缓存。

  7. 7

    保留与清理清单 Distribution

    控制 / 管理 · 审批保留与 GC

    先核对运行和回退引用、dry-run 与停止写入要求,再按维护流程清理,不在本图自动执行。

  8. 8

    独立测试客户端 备份与隔离恢复

    观测 / 查询 · 核验恢复样本

    测试客户端访问隔离恢复出来的仓库,验证保留摘要、权限和内容身份。

  9. 9

    保留与清理清单 备份与隔离恢复

    控制 / 管理 · 确认恢复前提

    未通过恢复验证时暂停实质删除,备份保护范围必须覆盖清理风险。

从架构到实施

  1. 01

    先建立身份与访问边界

    盘点运行、回退和本地缓存,验证 TLS 与分角色权限,再记录源码、基础镜像和目标架构。

  2. 02

    让扫描与独立拉取指向同一制品

    区分策略阻断和扫描错误,以相同摘要关联报告,在没有构建缓存的只读客户端验证内容与运行平台。

  3. 03

    从保留清单倒推清理前提

    保护线上、回退和多平台引用,按所选版本验证 GC 的只读或停写条件,并在隔离恢复通过后再审批清理。

故障域与操作边界

摘要一致不等于来源可信

摘要标识内容,不自动证明发布者身份、业务正确或完整安全;扫描、来源核验和实际运行约束需分别完成。

本地 prune 不能代表远端治理

缓存、标签、manifest 和 blob 是不同对象;远端垃圾回收需要按版本停止写入或进入只读状态,避免并发上传损坏引用。

基础认证不自动提供精细授权

项目和动作权限依赖所部署 token 服务或代理等能力;备份也必须包括这些恢复所需配置,而不只包括镜像层。

架构依据与版本核对 2 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

方案说明

架构与制品路径

建议使用 Docker Engine 构建或拉取已批准来源的镜像,Trivy 提供已知风险检查,CNCF Distribution 保存镜像并通过受保护网络分发。镜像摘要标识内容,标签用于表达版本和用途;构建记录应关联源码、目标架构、基础镜像摘要和测试结果。

适用边界

本方案覆盖单一受控仓库的镜像治理基础,不表示已部署高可用制品平台。TLS 与认证是入口基线,按仓库、项目或动作的精细授权需相应 token 服务或代理等能力;基础 htpasswd 认证不能自动等同于完整项目 RBAC。固定摘要有助于一致性,但不能单独证明发布者可信;扫描通过也不等于完整安全。

全局验收

授权构建端能推送指定范围、运行端只能拉取所需制品,未授权请求被拒绝;证书有效且无跳过校验。样本镜像在独立测试端按相同摘要成功拉取,目标架构与启动检查通过。保留清单明确覆盖线上和回退引用,清理只在备份与恢复验证后按计划进行,清理后仍可拉取保留摘要。所有 <...> 均为必须替换的占位符。

官方参考

工具编排

3 个关联工具
  1. Docker Engine镜像检查与客户端验证核对镜像身份、架构和独立客户端拉取行为。
  2. CNCF Distribution受控镜像存储与分发提供 Registry API 与持久化,需配置 TLS、认证及授权。
  3. Trivy制品风险检查记录已知漏洞等扫描结果及策略判定依据。

实施步骤

共 7 步
  1. 01

    盘点镜像来源与运行引用

    整理仓库、镜像名称、版本标签、摘要、架构、来源和负责人,将线上运行与回退引用单列为保留对象;同时统计构建端本地缓存与仓库存储,避免混淆两类清理范围。以下命令只读取当前 Docker daemon 的本地状态,执行前核对 Docker context;输出用于样本盘点,不能据此推断远端仓库已经没有引用,也不能直接当作删除清单。

    docker context show
    docker image ls --digests
    docker system df
    验证标准

    样本镜像均有来源、用途、负责人及对应环境,标签和摘要分开记录。线上及回退所需摘要有保留标记,本地缓存与远端仓库容量分别统计,未知来源或缺失摘要的对象明确进入待核对状态。

    停止与回退

    本步骤仅查询状态,不删除镜像或缓存。若 Docker context 指向非预期主机,停止后续操作并修正调查范围;保留只读盘点结果,不能用本地未运行作为远端制品可以删除的依据。

    返回步骤起点
  2. 02

    建立 TLS 和分角色访问

    先核对仓库域名、证书链、到期时间和客户端信任,再建立构建推送、应用拉取及仓库管理的独立身份;细粒度权限必须由实际支持的授权组件验证。下面 <REGISTRY_HOST> 是已确认域名,命令只请求 API 入口且不携带凭据;受保护仓库通常返回 401 和认证挑战,证书错误应修复信任链,不用跳过校验的参数处理。

    curl --silent --show-error --include 'https://<REGISTRY_HOST>/v2/'
    验证标准

    客户端验证证书成功,未认证请求按设计被拒绝,授权账号只能执行批准动作与仓库范围。拉取账号无法推送或删除,认证和审计记录能够定位主体;入口证书轮换及身份撤销有明确责任人。

    停止与回退

    恢复先前已验证的代理或认证配置,并停用新增测试身份;涉及访问中断时先恢复受控拉取路径。保留证书与授权排查证据,不开放匿名写入或切换不安全仓库来临时恢复构建。

    返回步骤起点
  3. 03

    规范构建输入与版本身份

    为业务镜像定义命名、标签与摘要记录规则,标签可表达提交或发行版本,但部署和回退记录使用实际摘要。基础镜像来源须经核对,固定摘要时同步建立更新与重扫计划,避免长期冻结已知风险;构建上下文排除密钥与无关文件,采用适合应用的最小运行层。多架构镜像应分别验证 manifest 和实际运行平台,不把单一架构通过当作所有平台通过。

    验证标准

    样本镜像能追溯到源码提交、基础镜像和目标平台,发布记录包含不可混淆的摘要。构建上下文及最终层无不应打包的敏感内容,各声明支持的架构都具备对应测试或明确的待验证状态。

    停止与回退

    恢复上一已验证构建定义并停止推进错误摘要,保留失败制品的受限排查记录。已对外使用的标签不要悄悄改指旧内容掩盖问题,应按版本记录恢复引用,确保运行端知道实际使用的是哪个摘要。

    返回步骤起点
  4. 04

    扫描候选制品并记录例外

    对明确摘要的候选镜像运行风险扫描,记录工具版本、漏洞库时间、扫描范围和执行状态;按业务策略评估严重度、修复版本和有效例外,不只统计一个总数。漏洞库过期、无法识别依赖或扫描执行失败应显示为未完成,不能默认放行。将报告与同一摘要关联,镜像更新后重新评估;已知漏洞检查之外仍需来源核验、密钥检查和实际运行约束。

    验证标准

    样本报告与镜像摘要一致,策略阻断和扫描器错误可以区分,失败结果不能进入已验收清单。风险例外注明责任人、理由和期限,过期报告及未覆盖架构保持待验证,不被描述为完整安全证明。

    停止与回退

    暂停候选摘要的分发或发布推进,保留报告和例外记录;误判需在评审后调整规则并重扫同一对象。不要通过全局关闭扫描或覆盖报告解除门禁,已有运行镜像按业务修复计划处置。

    返回步骤起点
  5. 05

    验证独立拉取与运行一致性

    选择与构建缓存隔离的测试客户端,使用只读凭据按已记录摘要拉取样本,核对仓库返回身份、架构和启动行为;受限测试环境不接入生产数据与外部写服务。比较拉取与构建报告的摘要,确认镜像清单和实际平台对应关系,并测量样本拉取耗时与错误类型。记录客户端信任配置和凭据来源,确保流程不依赖构建机遗留的管理员登录状态。

    验证标准

    独立客户端使用只读身份可拉取指定摘要,镜像平台和启动检查符合约定;错误凭据、无权仓库和不匹配平台会明确失败。样本耗时及带宽占用有记录,制品身份与扫描和发布清单一致。

    停止与回退

    停止测试容器并撤销临时拉取凭据,按明确清单处理测试客户端产生的可恢复资源。若摘要不一致或客户端依赖过宽权限,停止推广并恢复上一已验证引用,保留仓库与客户端诊断证据。

    返回步骤起点
  6. 06

    制定保留与垃圾回收计划

    按线上引用、回退窗口、发行版本和业务保留要求建立保护清单,再识别候选废弃 manifest;多平台清单及其引用应一起核对。标签移除、manifest 删除和 blob 垃圾回收是不同动作,不能把本地 prune 当作远端治理。先备份并在隔离副本验证所选版本的 dry-run;实际 GC 必须遵守停止写入或只读模式要求,避免并发上传时误清仍需使用的层。

    验证标准

    候选清理项均有可解释原因且不在运行或回退保护清单内,dry-run 对象与预期一致。备份覆盖恢复所需数据和配置,维护窗口及停止写入措施明确,估算可回收空间未被当作已经完成的释放结果。

    停止与回退

    在真正删除前发现引用不清或 dry-run 异常时取消清理,保持原数据不变。已进入维护状态则按计划恢复写入并确认客户端正常;任何实质删除失败均转入已验证的备份恢复流程,不继续扩大清理。

    返回步骤起点
  7. 07

    验证恢复并交接治理责任

    在隔离环境从备份恢复样本仓库及必要配置,以受控测试身份按保留摘要拉取,核对内容、权限和恢复耗时;生产仓库不作为首次恢复练习对象。交接镜像命名、摘要清单、风险报告、证书与凭据轮换、容量预警和清理审核责任。对尚未演练的全量迁移或跨地域恢复明确标注边界,定期复核长期保留镜像的实际引用与更新需求。

    验证标准

    隔离恢复后的保留摘要可拉取且身份一致,访问控制与证书配置符合测试范围,恢复耗时和缺口有证据。维护清单明确到人,未演练的容灾能力保持待验证,后续清理具备可复用的核对和停止条件。

    停止与回退

    结束隔离恢复测试并按准确资源清单回收临时实例及身份,保留备份本体和验证记录。恢复失败时暂停生产清理或迁移,修复备份覆盖与恢复步骤后重新验证,不依赖未验证备份执行删除。

    返回步骤起点

DOUYA OPS ECOSYSTEM

体验豆芽自研工具与场景能力

部分场景提供体验环境,用于功能验证、测试和技术交流。