如何在containerd中查看image manifest?
containerd环境查看镜像Manifest的操作方法
首先纠正一个常见误区:containerd配套的ctr、nerdctl并非没有manifest操作能力,只是命令用法和docker存在差异,很多使用者没找对参数,不同工具的具体操作方式如下:
1. 使用ctr(containerd原生命令行)
- 本地已拉取的镜像,可直接提取格式化后的完整manifest:
ctr image inspect --field ".manifest" <镜像名:标签>
- 查看远程镜像manifest前,可先拉取镜像,加
--platform all参数可拉取多架构manifest列表:
ctr image pull --platform all <远程镜像名:标签>
- 如果需要获取原始未格式化的manifest内容,可通过content子命令直接读取对应存储块:
# 先查询镜像manifest对应的digest ctr image ls -q | grep <镜像名:标签> # 读取原始manifest内容 ctr content get <上一步输出的digest>
2. 使用nerdctl
nerdctl的manifest操作逻辑和docker基本对齐,很多人没找到对应能力是因为漏了manifest子命令:
- 查看远程镜像(无需提前拉取到本地)的manifest:
nerdctl manifest inspect <远程镜像名:标签>
- 查看本地已拉取镜像的完整manifest:
默认nerdctl image inspect输出的是简化版基础信息,加--mode=native参数即可输出全量底层元数据,其中包含完整manifest结构,系统装了jq的话可以直接提取对应字段:
nerdctl image inspect --mode=native <本地镜像名:标签> | jq '.[0].Manifest'
3. 使用crictl
crictl作为Kubernetes CRI标准客户端,没有提供直接输出原始manifest的原生命令,可通过以下步骤获取:
- 先查询目标镜像的ID:
crictl images <镜像名:标签>
- 拿到镜像ID后,可调用ctr命令读取对应manifest内容;也可以执行
crictl inspecti <镜像ID>查看CRI规范格式的镜像元数据,其中包含manifest的核心字段。
注意:查看多架构镜像的manifest列表(也叫fat manifest)时,不要指定单平台参数,否则输出的会是对应架构的单份manifest,而非多架构索引列表。
内容的提问来源于stack exchange,提问作者paco alcacer
相关产品推荐
相关产品推荐

