You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker保存镜像的tar包中manifest.json是什么?为何不符合规范?

关于Docker Save导出包中manifest.json的疑问解答

你看到的这个manifest.json是Docker传统镜像归档格式的遗留元数据文件,并非符合OCI规范的镜像清单,具体说明如下:

1. 格式的来源与定位

这个文件是早期Docker未对齐OCI规范时,docker save命令导出镜像的标准元数据格式。它的核心作用是给旧版docker load命令提供镜像的核心元数据:包括配置文件路径、层文件路径、仓库标签等,本质是一个简化的镜像元数据列表,结构上贴近docker image inspect的精简版输出,但只保留了镜像导入过程中必需的路径信息。

2. 保留该文件并命名为manifest.json的原因

现在Docker已经全面支持OCI镜像规范,所以你在解压包中能看到符合标准的index.json(OCI镜像索引)和对应的OCI manifest文件(存储在blobs/sha256/目录下)。而保留这个旧格式的manifest.json完全是为了向下兼容——确保使用旧版本Docker(未支持OCI规范的版本)的用户,依然可以通过docker load命令正常导入这个镜像。

结合你的操作示例验证

你执行的导出与解压命令:

$ docker save 000908da321f > a.tar
$ tar -xvf ./a.tar -C a

解压后得到的manifest.json是数组结构,包含Config、Layers等字段,这正是旧版Docker归档格式的典型特征:

[
    {
        "Config": "blobs/sha256/000908da321ffa9418f599f3476fece162f3903f3f2e9fdd508c8b91ee9008ff",
        "Layers": [
            "blobs/sha256/08000c18d16dadf9553d747a58cf44023423a9ab010aab96cf263d2216b8b350",
            ...
        ],
        "LayerSources": { ... },
        "RepoTags": null
    }
]

而真正符合OCI规范的镜像清单,是通过index.json中指定的digest找到的blobs/sha256/dbe15f62d97cfdb1271a9612e4df8bd5d79b11404dcaed42b82e4cf796338f37文件,它包含标准的schemaVersion、mediaType字段,以及镜像配置和层的完整摘要信息。


内容的提问来源于stack exchange,提问作者xealits

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:43:17