查找 docker 镜像的所有 tag
2021-01-13 本文已影响0人
南国的小狼
建议阅读方式
可前往语雀阅读,体验更好:查找 docker 镜像的所有 tag
环境说明
centos7 阿里云主机一台:
docker 相关信息如下:
测试镜像 hello-world
的 tags 情况见官网:docker-hub#hello-world#tags
curl
安装相关信息:
查看方式
方法一:利用 v1 版 api
命令如下,其中 hello-world
为镜像名字:
curl -L -s https://registry.hub.docker.com/v1/repositories/hello-world/tags | json_reformat | grep -i name | awk '{print $2}' | sed 's/\"//g' | sort -u
封装成 list_image_tags_v1.sh
:
#!/bin/bash
repo_url=https://registry.hub.docker.com/v1/repositories
image_name=$1
curl -L -s ${repo_url}/${image_name}/tags | json_reformat | grep -i name | awk '{print $2}' | sed 's/\"//g' | sort -u
注意:用到了 json_reformt
命令,系统中必须安装 yajl
rpm 包
方法二:利用 v2 版 api
命令如下,其中 hello-world
为镜像名字:
curl -L -s 'https://registry.hub.docker.com/v2/repositories/library/hello-world/tags?page_size=1024' | jq '.results[]["name"]' | sed 's/\"//g' | sort -u
封装成 list_image_tags_v2.sh
:
#!/bin/bash
repo_url=https://registry.hub.docker.com/v2/repositories/library
image_name=$1
curl -L -s ${repo_url}/${image_name}/tags?page_size=1024 | jq '.results[]["name"]' | sed 's/\"//g' | sort -u
注意:用到了 jq
命令,系统中必须安装 jq
rpm 包
对比两种方法得到的结果
其他方法合集
测试镜像: hello-world
-
wget v1
# 写法一 wget -q https://registry.hub.docker.com/v1/repositories/hello-world/tags -O - | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}' | sort -u # 写法二 wget -q https://registry.hub.docker.com/v1/repositories/hello-world/tags -O - | tr -d '[]{, ' | tr '}' '\n' | awk -F: '{print $3}' | sed 's/"//g' | sort -u
-
wget v1 jq(简洁)
wget -q https://registry.hub.docker.com/v1/repositories/hello-world/tags -O - | jq -r '.[].name' | sort -u
-
skopeo(简洁,需安装 skopeo rpm 包,该包依赖项比较多)
安装 skopeo rpm 包方法:
yum search skopeo
yum install -y skopeo
# --override-os linux 参数只在非 Linux 宿主机上需要,如 MacOS skopeo --override-os linux inspect docker://hello-world | jq '.RepoTags' | tr -d '[]", ' | sort -u # 在 centos 上,上述命令还可以被简写成如下形式 skopeo inspect docker://hello-world | jq '.RepoTags' | tr -d '[]", ' | sort -u