在使用 Docker 时,查询一个 Docker镜像(Docker image)。一般使用 docker search keywords
命令来查询 keywords 的镜像信息,如下:
并且通常使用 docker pull imagename
命令从远端仓库拉取镜像。默认情况下会拉取到 tag 为 lastest 的镜像。但是,如果不想使用这个 tag 的镜像应该怎么办?
下面介绍两种查询指定镜像所有标签的方法。
直接去dockerHub查询
可以直接访问 https://hub.docker.com/search
并输入查询关键字来查询指定镜像的 tags,如下:
点击最佳匹配的查询结果:
至此,通过页面上的 Filter Tags 控件可以更加精细的查询期望使用的 tag。
通过API接口获取
除过以上方法之外,还可以直接调用 DockerHub 提供的API接口来获取我们想要的镜像 tag。
URL:
https://${host}/v1/repositories/${name}/tags
Method:
Get
注意: v2版本的接口已经变成如下格式,当前v1和v2两个版本的接口都可以使用,故不赘述。想了解更多关系v2接口的信息可以查阅 https://docs.docker.com/registry/spec/api/#tags
我们可以使用任何Http客户端工具来调用这个API接口。wget,okhttp,postman 或者其他自己熟悉的客户端都可以。下面是我用 Postman 访问接口获取到的数据:
OK!到此我们也已经获取到了我们所期望的 Tag 信息。
更加完善的方案
Stackoverflow 上有位朋友用使用接口的方式写了一个脚本,使得查询 Tag 信息更加的方便和快捷。核心的 shell 片段为:
1 | wget -q https://registry.hub.docker.com/v1/repositories/debian/tags -O - | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}' |
以下是完整的shell脚本:
1 | !/bin/bash |
如果你查询镜像 Tag 的频率不高,使用第一个核心代码片段就可以了。如果您的使用频次比较高,还有一个更好的办法供你选择。
您可以将如上完整的代码片段写入一个 shell 脚本,比如命名为 dockertags
。并将该文件移动到 /usr/local/bin
目录,或者其他任意目录也可以,但是您记得要将脚本所在的目录加入到 PATH 环境变量中去。另外,记得不要忘了使用 chmod +x dockertags
命令给脚本执行权限。这样你就可以像使用 ls
cat
等命名一样方便的查询期望的 Tag 了。
两种使用语法:
1 | dockertags ${imageName} |
1 | dockertags ${imageName} ${filter} |
OK! Enjoy Yourself~ (●ˇ∀ˇ●)
欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !