Как получить теги докера, указывающие на то же изображение, что и последние, без загрузки? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь идентифицировать теги докера, которые указывают на то же изображение, что и, например, последний делает, так что я могу определить конкретный не «плавающий» тег.

Я пытаюсь следовать https://docs.docker.com/registry/spec/api/, но в соответствии с этой документацией мне придется использовать, например, https://registry.hub.docker.com/v2/repositories/library/maven/tags/list, если я прав, но у меня только https://registry.hub.docker.com/v2/repositories/library/maven/tags/ работает.

Итак, я нашел способ получить все теги. Но теперь я хотел бы получить дайджесты без загрузки изображений следующим образом:

docker pull maven:3.3
docker inspect --format='{{index .RepoDigests 0}}' maven:3.3

Поскольку загрузка занимает много времени, я не хочу загружать все изображения.

Поэтому я пытаюсь использовать API, но, как и ожидалось, https://registry.hub.docker.com/v2/maven/manifests/3.3 не работает.

Поэтому мне интересно, как я могу получить манифест, чтобы иметь возможность извлечь дайджест изображения, чтобы я мог идентифицировать соответствующие теги.

Или есть способ, подобный

docker image list-similar latest

Текущее состояние решения

retrieveTags () {
    local IMAGE="$1"

    printf "Retrieve tags [IMAGE=%s]\n" "${IMAGE}" >&2
    local i=1
    while curl -k ${D_REGISTRY_ADDRESS}/v2/repositories/library/${IMAGE}/tags/?page=$i 2>/dev/null | jq -r '."results"[]["name"]' 2>/dev/null
    do 
        i=$((i+1))
        printf "." >&2
    done
    printf "DONE\n" >&2
}

readonly D_IMAGE="maven"
readonly D_TAG="latest"
readonly D_REGISTRY_ADDRESS="${REGISTRY_ADDRESS:-https://registry.hub.docker.com}"

FOUND_TAGS="`retrieveTags maven`" 2>&1
echo "Found tags: ${FOUND_TAGS}"

Привет

...