containerd中文翻译系列(十)镜像验证

下面将介绍默认的 "bindir"ImageVerifier插件实现。

要启用图像验证,请在 containerd 配置中添加类似下面的一段:

yaml 复制代码
[plugins]
  [plugins."io.containerd.image-verifier.v1.bindir"]
    bin_dir = "/opt/containerd/image-verifier/bin"
    max_verifiers = 10
    per_verifier_timeout = "10s"

如果存在,bin_dir中的所有文件都必须是符合以下 API 的验证器可执行文件。

镜像校验器二进制 API

CLI 参数

  • -name: 可提取的镜像的给定引用。
  • -digest: 可提取镜像的解析摘要。
  • -stdin-media-type: 传入 stdin 的 JSON 数据的媒体类型。

标准输入

经过 JSON 编码的有效载体会传入验证程序二进制文件的标准输入。该有效载体的

媒体类型由 -stdin-media-type CLI参数指定,并可能在 containerd 的未来版本中发生变化。目前有效载体的媒体类型是 application/vnd.oci.descriptor.v1+json代表可能被提取的镜像的 OCI 内容描述符。参见OCI 规范了解更多详情。

镜像提取判断

向标准输出端打印镜像提取判断的原因。

返回 0 的退出代码表示允许调出镜像,返回任何其他退出代码表示阻止调出镜像。

镜像校验器调用者合约

  • 如果 bin_dir 不存在或不包含任何文件,则镜像校验器不会阻止镜像提取。
  • 只有当所有被调用的校验器都返回 ok判断(以状态代码 0 退出)时,才会提取镜像。换句话说,镜像提取判断是由 AND运算符组合而成的。
  • 如果任何验证器超过了 per_verifier_timeout 或执行失败,则验证失败并显示错误,同时返回 nil 判断。
  • 如果 max_verifiers < 0,则对调用的镜像校验器数量没有限制。
  • 如果 max_verifiers >= 0,则对调用的镜像校验器数量有限制。bin_dir中的条目按名称的词序排序,第一个 n=max_verifiers 的校验器将被调用,其余的将被跳过。
  • 无法保证验证程序二进制文件的执行顺序。
  • 验证程序二进制文件的标准错误输出会被 containerd 记录在调试级别,但会被截断。
  • 校验二进制文件的标准输出(判断的 "reason")会被截断。
  • 验证程序二进制文件使用的系统资源目前在 containerd 自己的 cgroup 中进行核算和限制,但这一情况可能会发生变化
相关推荐
小陈不好吃2 小时前
从单体到微服务:Spring Cloud Gateway 动态路由实战与踩坑记录
微服务·云原生·架构
云祺vinchin5 小时前
桌面云如何高效备份?某科技公司灾备建设实战
云原生·数据安全·数据备份·无代理备份·桌面云
阿里云云原生7 小时前
从 NL2SQL 到自动巡检:乐檬如何打造面向多租户 SaaS 的全链路可观测性体系?
云原生
阿里云云原生8 小时前
Agent 观测与优化开发者摸底报告
云原生·agent
探索云原生9 小时前
Kueue + HAMi vGPU 实战:显存与算力配额管理
docker·ai·云原生·kubernetes·gpu
玉&心11 小时前
通过helm在k8s上面一键部署前端和后端代码
云原生·容器·kubernetes·helm
容器魔方13 小时前
议程一览 | 华为云亮相 KubeCon + CloudNativeCon China 2026
人工智能·云原生·容器·开源·华为云·云计算
瀛川14 小时前
Agent 换了 Pod,身份怎么办?拆解 Substrate 的 Actor Identity
人工智能·云原生
yanwumuxi14 小时前
Milvus使用和改进
云原生·eureka·milvus
分布式存储与RustFS15 小时前
RustFS 1.0.0-rc.5 发布:GA 前的最后一次大版本打磨
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准