I'm arriving a little late, I searched this question as list all tags for the same image (understand digest), unfortunately most of the answers are only about displaying all available tags for any image digest that was pushed.
Case in hand, for open jdk the same image digest is usually tagged multiple times :
{
"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"
]
},
I wasn't able to find the relevant API v2, it seems the api exposes tags, but there's no details and otherwise you need to list each blob manifest to get matching digest via the response header Docker-Content-Digest
. I Unless I missed something this unusable for my use case when there is a lot of tags, so I just used the regular dockerhub API to get all tags and teir details and group these tags by the image digest.
(
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
I've published this as a script in this gist, any comment or suggestion would be appreciated.