姜鹏辉的个人博客 GreyNius

【Docker】批量删除docker镜像(不通过id删除原始镜像)

2019-07-20

在这里插入图片描述 之前在公司的时候为了测试单个镜像的名字最长可以有多长,为了不破坏研发环境,在自己的亚马逊服务器上装了个docker,不停的打tag改名,结果现在已经忘了,大概是镜像名+tag不超过256个字符。 现在一用docker images命令查询本地的镜像,简直不忍直视。 看了一下,除了一个名为registry的镜像是有用的,其他的都是基于这个打的tag,实际上都是不占存储空间的 当时统一的名字都是以a123开头的,所以批量删除时,按照网上的教程用如下命令

docker rmi --force `docker images | grep a123 | awk '{print $3}'`

在这里插入图片描述效果如下,把不带a123字符串的registry镜像也给删了

在这里插入图片描述 后来仔细读了一下这个命令的后半段

docker images |grep a123|awk  '{print $3}'

问题出在awk ‘{print $3}’这个阶段,返回的是Image id,也就是说删除的时候并不是按照镜像的名字来删除的,而是按照id,我这里面所有的镜像id都是一样的,所以就连最原始的registry镜像,哪怕名字中不带a123也难逃厄运。 所以这里需要改成

docker images|grep a123| awk '{printf "%s:%s",$1,$2}'

其中$1为镜像名,$2为tag


Similar Posts

Comments