OCI映像清单和Docker V2.2映像清单之间的区别

时间:2020-06-08 17:02:50

标签: docker

我需要将OCI映像清单转换为Docker v2.2映像格式,反之亦然。但是我找不到两者之间的任何区别,是否有实际区别或相同?

1 个答案:

答案 0 :(得分:2)

Docker Image Manifest V 2,架构2

注册表映像清单定义了组成容器注册表上映像的组件(请参见容器注册表部分)。我们将使用的更常见的清单格式是Docker Image Manifest V2 Schema 2(更简单地说是V2.2)。还有一种常用的V2模式1格式,但由于与V1的向后兼容原因,它比V2.2​​复杂。

V2.2清单文件格式是一个JSON Blob,具有以下顶级字段:

schemaVersion-在这种情况下为2

mediaType-application/vnd.docker.distribution.manifest.v2+json

config-容器配置Blob的描述符

layers-层Blob描述符的列表,与容器配置的rootfs顺序相同

Blob描述符是包含3个字段的JSON对象:

mediaType-application/vnd.docker.container.image.v1+json用于容器配置,或application/vnd.docker.image.rootfs.diff.tar.gzip用于层

size-Blob的大小,以字节为单位

digest-内容摘要

以下是V2.2清单格式的示例(用于Docker Hub繁忙箱映像):

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 1497,
    "digest": "sha256:3a093384ac306cbac30b67f1585e12b30ab1a899374dabc3170b9bca246f1444"
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 755724,
      "digest": "sha256:57c14dd66db0390dbf6da578421c077f6de8e88edd0815b4caa94607ba5f4c09"
    }
  ]
}

OCI图片清单

OCI映像格式与Docker V2.2格式基本相同,只是有一些区别。

mediaType-必须设置为application/vnd.oci.image.manifest.v1+json config.mediaType-必须设置为application/vnd.oci.image.config.v1+json

图层中的每个对象必须具有mediaTypeapplication/vnd.oci.image.layer.v1.tar+gzip的{​​{1}}。

来源:https://containers.gitbook.io/build-containers-the-hard-way/#registry-format-oci-image-manifest