我来晚了,我搜索了这个问题,列出了同一张图片的所有标签(了解摘要),不幸的是,大多数答案只是关于显示推送的任何图片摘要的所有可用标签。
举个例子,对于 open jdk,同一个图像摘要通常会被标记多次:
{
"sha256:518f6c2137b7463272cb1f52488e914b913b92bfe0783acb821c216987959971": [
"11",
"11-buster",
"11-jdk",
"11-jdk-buster",
"11.0",
"11.0-buster",
"11.0-jdk",
"11.0-jdk-buster",
"11.0.8",
"11.0.8-buster",
"11.0.8-jdk",
"11.0.8-jdk-buster"
]
},
我找不到相关的 API v2,似乎 api 公开了标签,但没有详细信息,否则您需要列出每个 blob 清单以通过响应标头 Docker-Content-Digest 获得匹配的摘要。除非我在有很多标签的情况下错过了对我的用例无法使用的东西,所以我只是使用 regular dockerhub API 来获取所有标签和 teir 详细信息,并按图像摘要对这些标签进行分组。
(
url="https://registry.hub.docker.com/v2/repositories/library/openjdk/tags/?page_size=100" ;
while [ -n "$url" ]; do
>&2 echo -n ".";
content="$(curl -s "$url")";
url=$(jq -r '.next // empty' <<< "${content}");
echo "$content";
done;
>&2 echo;
) | jq -s '[.[].results[]]' \
| jq 'map({tag: .name, digest: .images[].digest}) | unique | group_by(.digest) | map(select(.[].digest) | {(.[0].digest): [.[].tag]})' \
> openjdk-tags.json
我已将此作为脚本发布在此 gist 中,任何意见或建议将不胜感激。