snt*_*nth 11 docker docker-registry
我想使用v2 API找到私有Docker注册表中图像的最新时间戳,而不先将图像拉到我的本地主机.
snt*_*nth 18
所以经过一些黑客攻击,我得到以下工作使用curl和jq工具:
curl -X GET http://registry:5000/v2/<IMAGE>/manifests/<TAG> \
| jq -r '.history[].v1Compatibility' \
| jq '.created' \
| sort \
| tail -n1
Run Code Online (Sandbox Code Playgroud)
这似乎工作,但我真的不知道如何解释v1兼容性表示,所以我不知道我是否真正得到正确的数字.
对此的评论是受欢迎的!
使用V2 图像清单(架构版本 2),响应http://registry:5000/v2/<IMAGE>/manifests/<TAG>不包含“历史记录”字段,并且我还没有找到一种方法来在一个请求中检索图像创建日期。但是,可以根据图像清单配置的摘要使用另一个请求来获取它。
首先,获取配置的摘要(注意指定架构版本的标头):
digest=$(curl -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' \
http://registry:5000/v2/<IMAGE>/manifests/<TAG> \
| jq -r '.config.digest')
Run Code Online (Sandbox Code Playgroud)
的值digest将类似于
sha256:ec4b8955958665577945c89419d1af06b5f7636b4ac3da7f12184802ad867736。
然后,获取摘要标识的对象的 blob,即容器的配置对象,并从那里检索创建日期:
curl -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' \
http://registry:5000/v2/<IMAGE>/blobs/$digest | jq -r '.created'
Run Code Online (Sandbox Code Playgroud)
这应该产生:
2021-10-27T12:18:24.105617451Z
Run Code Online (Sandbox Code Playgroud)
我不确定上述方法是否是唯一或最好的方法,但顺便说一句,这显然或多或少是skopeo在运行时在幕后所做的事情:
skopeo inspect docker://registry:5000/<IMAGE>:<TAG>
Run Code Online (Sandbox Code Playgroud)
上面的命令返回有关图像标签的信息,其中包括创建日期:
{
"Name": "registry:5000/<IMAGE>",
"Digest": "sha256:655721ff613ee766a4126cb5e0d5ae81598e1b0c3bcf7017c36c4d72cb092fe9",
"RepoTags": [...],
"Created": "2021-10-27T12:18:24.105617451Z",
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5936 次 |
| 最近记录: |