How can I list tags for a repository?

I extended the code by @zzhouqianq to grab all the tags, doing multiple round-trips to DockerHub when necessary. I hope someone finds it useful.

function listAllTags() { 
    local repo=${1} 
    local page_size=${2:-100} 
    [ -z "${repo}" ] && echo "Usage: listTags <repoName> [page_size]" 1>&2 && return 1 
    local base_url="https://registry.hub.docker.com/api/content/v1/repositories/public/library/${repo}/tags" 
     
    local page=1 
    local res=$(curl "${base_url}?page_size=${page_size}&page=${page}" 2>/dev/null) 
    local tags=$(echo ${res} | jq --raw-output '.results[].name') 
    local all_tags="${tags}" 
 
    local tag_count=$(echo ${res} | jq '.count')   
 
    ((page_count=(${tag_count}+${page_size}-1)/${page_size}))  # ceil(tag_count / page_size) 
 
    for page in $(seq 2 $page_count); do 
        tags=$(curl "${base_url}?page_size=${page_size}&page=${page}" 2>/dev/null | jq --raw-output '.results[].name') 
        all_tags="${all_tags}${tags}" 
    done 
 
    echo "${all_tags}" | sort 
} 
1 Like