在使用 Docker 的时候,我发现有个需求很常见但是又不那么容易实现,那就是查看一个 image 的 tag 有哪些。例如我想要一个 Golang 的 Docker 镜像,最新的 Golang 已经发布到了 1.12 了,我不确定是否 docker 官方的镜像是否已经更新了,或者更新到什么程度,是 1.12.1 还是 1.12.2。
在以前,我有这个需要的时候都是去 http://hub.docker.com 上搜索对应的镜像详情,然后查看 tag 列表,但是很明显,这确实很麻烦,所以,我就找了找有什么命令可以帮助,然而,没有发现更好的,一条比较有用的就是这个了:
# 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 函数配置在 .bashrc 中:
function dockertags() {
wget -q https://registry.hub.docker.com/v1/repositories/"$@"/tags -O - | sed \
-e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk \
-F: '{print $3}'
}
这也可以挺方便得使用:
# dockertags centos
latest
5
5.11
6
6.10
6.6
6.7
6.8
6.9
... ...
但是,我因为有自己的工具包,所以我不想用这种方式,于是乎,我就在我的工具包中加入了这个功能,如果你想体验一把,可以尝试这么操作:
# go get -u github.com/lauzoo/laugo/cmd/laudocker
# go install github.com/lauzoo/laugo/cmd/laudocker
# laudocker tags golang | head
latest
1
1-alpine
1-alpine3.5
1-alpine3.6
1-alpine3.7
1-alpine3.8
1-alpine3.9
1-cross
1-jessie
轻松加愉快得完成了事情。