如何从Docker Hub(私有存储库)获取所有标签作为Shell脚本



当我执行一个shell脚本时,它只显示300个标签docker hub中的64个标签。

下面是我通过curl在shell脚本中执行的命令。

IMAGE_TAGS=$(curl -s -H "Authorization: JWT ${HUB_TOKEN} https://hub.docker.com/v2/repositories/$username/issues/tags/?page_size=300" | jq --raw-output '.results[] | .name')

即使在给出page_size之后,它也不会显示我的所有标签

注意:-标签用于私人存储

请帮助我如何解决

尝试API版本1,它可以帮助我获得所有标签

https://registry.hub.docker.com/v1/repositories/mysql/tags在浏览器中打开,您可以根据需要修改

或者看看Githubhttps://gist.github.com/robv8r/fa66f5e0fdf001f425fe9facf2db6d49这正是你想要的

更新

将其添加到shell脚本文件中

#!/usr/bin/env bash
docker-tags() {
arr=("$@")
for item in "${arr[@]}";
do
tokenUri="https://auth.docker.io/token"
data=("service=registry.docker.io" "scope=repository:$item:pull")
token="$(curl --silent --get --data-urlencode ${data[0]} --data-urlencode ${data[1]} $tokenUri | jq --raw-output '.token')"
listUri="https://registry-1.docker.io/v2/$item/tags/list"
authz="Authorization: Bearer $token"
result="$(curl --silent --get -H "Accept: application/json" -H "Authorization: Bearer $token" $listUri | jq --raw-output '.')"
echo $result
done
}
docker-tags "<YOUR_DOCKER_IMAGE_NAME>"

<YOUR_DOCKER_IMAGE_NAME>替换为docker映像。

通过HTTP API 列出Docker集线器上Docker镜像的标签

最新更新