Docker镜像latest标签的误导

xiaohai 2020-08-21 14:51:49 2967人围观 标签: Docker 
简介在使用Docker时,经常会犯一个错,误以为latest镜像会自己更像到最小版本,其实这样理解是有问题的,latest就是一个标签,没有自动更新到最新版本的功能,本文就是对latest标签进行介绍。

经常我们会使用docker pull来获取镜像,如:

docker pull nginx

其实docker内部会判断我们没有指定版本,所以帮我们自动加上了latest标签,如:

docker pull nginx:latest

当我们通过以上命令获取了nginx的镜像,并且是latest标签,这时候镜像在服务器上就已经被下载下来了,如果不对这个镜像做重新的获取,其实这个镜像在Docker仓库更新了n个版本后,我们本地也还是latest标签的镜像,所以常常以为会自动更新,其实没有这个功能的。

查看所有为none标签的镜像

那如何更新到最新版本呢,其实就只有通过pull命令去获取,但是如果我们拉取了最新的版本后,docker会把以前的是latest标签变为none标签,这些版本的镜像其实是没有用的,所以我们可以通过如下命令进行查看

docker images | grep none
删除所有为none标签的镜像

如果你已经不需要这些镜像了,需要进行删除,那么使用如下命令可以实现批量删除

docker images | grep none | awk '{ print $3; }' | xargs docker rmi
更新所有镜像到latest标签
docker images --format "{{.Repository}}:{{.Tag}}" | grep ':latest' | xargs -L1 docker pull
查看镜像的Docker版本
docker image inspect nginx:latest | grep -i version

本文就记录这么多,再次说明一下latest标签就是一个普通的标签,它不具备自动更新的功能,你可以将任意的一个版本都打包成latest标签的镜像的。