在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。