私有化部署采用容器映像(image)交付时,一行映像地址还不足以回答“这份交付物能否在目标服务器运行”。先确认这个引用指向单平台清单,还是包含多个对象的索引,再核对目标平台对应的具体映像。最后仍要在约定环境验证业务;平台标签本身不能代替运行结果。
本文面向架构师与实施人员,以 Docker 公开文档和 OCI Image Index v1.1.1 为机制例子。方法以项目确实采用容器映像为前提,不预设任何办公产品的交付形式。下述记录是待执行核验设计,未查询客户映像仓库,也未拉取、构建或运行映像。
同一个引用,可能指向不同层级的对象
Docker 多平台构建指南区分了两种结构:单平台映像的 manifest 指向配置与层;多平台映像的 manifest list 再指向各自的 manifest。按该指南所述,Docker 拉取多平台映像时,会根据主机架构选择相应变体。这是具体实现的说明,不能据此承诺每一种运行时的选择规则和错误提示都相同。
所以交付核对的第一问应是“这个引用当前解析到什么对象”。若拿到的是单平台 manifest,就沿着它的配置与内容核对;若拿到的是索引或清单列表,就继续确认目标平台对应哪个子对象。不要把上层索引的身份直接填进“目标平台实际映像”一栏,两者可能处于不同层级。
记录时同时保留引用、观察时间、对象类型及 digest。索引 digest 与平台子 manifest 的 digest 分别标识各自对象;上层索引相同,并不表示不同平台最终使用的是同一份映像内容。对象身份也只是核对交付物的依据,不证明应用功能、性能或兼容认证。
索引里有几项,不等于支持几个运行平台
OCI Image Index v1.1.1 规范允许索引包含 manifest 描述符,也允许嵌套索引;manifests 数组可以为空。描述符中的 platform 对象是可选项,若存在,则以 architecture、os 等字段描述目标,必要时还包括 variant 或 os.version。不能假设每一行都有完整平台信息。
除了平台映像,还要识别对象用途。Docker 的 imagetools inspect 参考页给出过带 attestation 注解、平台显示 unknown/unknown 的条目。这个例子说明,看到“unknown”不能直接认定交付缺少某个 CPU 版本;更不能将数组长度当作可运行平台数量。应结合 mediaType、注解和交付说明,确认条目是什么,再判断是否与本次目标相关。
例如,一份假设索引包含两个平台映像和一个证明材料条目,三行不代表三种主机都能运行。这只是用于理解对象用途的合成例子,不是任何供应商的真实 manifest 或产品支持清单。缺少用途说明时,记录为待确认,不能为了填满表格自行猜测。
平台描述对得上,还要确认运行方式
Docker 指南指出,容器共享宿主内核,容器化并未消除系统与 CPU 架构的约束。它同时介绍了模拟、多原生节点和交叉编译等不同构建路线。这些路线不能混成一个“支持多平台”的结论;在模拟条件下能启动,也不能直接写成已通过目标硬件的原生运行验证。
平台字段描述的是映像声明的目标,不会自动改变内部二进制。配置一个目标平台参数,也不能把错误架构的程序转换成可用产物。若实际使用模拟环境,应将模拟方式与版本单独记录;项目要求原生部署时,应取得相应交付物和验证依据,而非用模拟结果顶替。
同样,linux/arm64 这样的描述还不能覆盖某一具体国产软硬件组合的全部要求。正式交付说明、依赖条件与约定业务验证仍需另核。已有的信创适配范围核验方法讨论了环境组合和认证边界;本篇补充的是映像引用到平台产物之间的对象识别过程,不以平台字段重新作一次适配承诺。
让环境表能追到具体交付物
如果项目采用映像交付,可请实施方在环境调研记录中补上下面几项。实际取证方式应遵循项目的授权和交付流程;公开 CLI 文档只解释工具输出,不代表本文已对某个仓库执行检查。
| 记录项 | 要对应的证据 | 仍不能推出 |
|---|---|---|
| 引用及观察时间 | 本次正式交付记录与查询时点 | 所有时点都指向同一对象 |
| 上层对象类型与 digest | 单平台 manifest 或索引的身份 | 目标平台产物已经选定 |
| 目标平台及条目用途 | os、architecture、相关变体和用途说明 | 条目数量就是平台数量 |
| 实际选中的子对象 | 子 manifest 身份及运行时选择记录 | 应用在该环境已运行通过 |
| 环境与业务结果 | 原生或模拟条件、版本及约定操作记录 | 其他环境或全部格式也通过 |
离线交付时,还要让这条记录对应到实际收到的介质与内容。仓库中查得到某个对象,不等于隔离环境已经收到它及所需内容;在联网环境取得的检查输出,也不能代替离线安装记录。这里不提供搬运或修改映像的操作步骤,缺项由交付负责人补齐。
将元数据核对与业务验证分开验收
在授权隔离环境中,可以先设计三类用例:目标平台有对应条目、目标平台没有对应条目,以及同一交付物分别在约定原生条件和模拟条件下验证。每类都记录对象解析与选择的实际结果,不预写必然出现的错误文案;网络、权限和依赖异常仍须依据真实错误另行定位。
元数据核对完成后,再用合成文档验证项目约定的打开、预览或转换任务,记录运行环境与具体结果。没有执行的任务保留“未验证”。不要因为映像能被识别或容器成功启动,就将全部文档处理能力记为通过,也不要把一次运行结果写成互认证结论。
评估石墨办公文档中台私有部署时,可先确认实际交付形式;若采用容器映像,带上目标环境与上述对象记录预约架构演示,由实施方明确适用版本和待验证范围。产品是否采用该交付方式、有哪些平台产物及正式适配材料,都以项目提供的当前依据为准。也可以先看私有化部署方案,了解部署形态与交付范围。