使用注册表 API 获取 Docker 映像的容器配置



在CLI中,我可以做docker inspect --type image {some_image},部分答案是:

"ContainerConfig": {
"Hostname": "4beccaca9c40",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD ["/bin/sh" "-c" "cat /marker"]"
],
"ArgsEscaped": true,
"Image": "sha256:111ecb4a6197242745f0d74c2ca4e377cfe4a1686b33160d3a8df3d3d1baea58",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"key1": "LabelValue1-L2",
"version": "1.2.0"
}
},

注册表 API 定义答案类型

  • application/vnd.docker.container.image.v1+json: Container config JSON

但我无法将其与特定的 API 联系起来。当我将其与../manifests/..URL 一起使用时,我会收到默认格式(application/vnd.docker.distribution.manifest.v1+json(的答案(如果我尝试使用"胖清单"格式,也会发生这种情况(。

此配置信息是否在某处可用?

注册表是几天前提取的标准注册表映像("Created": "2018-01-10T01:22:39.470942376Z"说(

因此,需要的是:

  • https://{registry}/v2/{imageName}/manifests/{tag}的首次调用,Accept标头设置为application/vnd.docker.distribution.manifest.v2+json

    这将返回一个 JSON,其中config.mediaType设置为 V1 清单的内容类型(据我所知,该内容类型始终application/vnd.docker.container.image.v1+json(。

  • https://{registry}/v2/{imageName}/manifests/{tag}的第二次调用,Accept标头设置为上面获取的内容类型(相同的 URL,只有Accept更改(。

    这将返回一个 JSON,其中成员history是一个列表,并且此列表的每个成员都有一个v1Compatibility属性,该属性是一个字符串,可以重新解析为 JSON。

最新更新