使用一段时间Docker后会产生很多临时镜像(悬虚镜像),数量还少勉强手动逐条删除,一段时间不清理数量多起来删除很费时,所以想批量删除。可以利用linux三剑客命令awk
- awk
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
使用方法 : awk ‘{pattern + action}’ {filenames}
编程时用法 : command1 | awk {print $1}
输出结果第一列数据
1
| docker images | awk '{print $1}'
|
再配合grep查找关键字,可以用正则表达式,xargs结果作为参数给docker rmi
,删除指定标签的镜像
1
| docker images | awk '{print $1}' | grep mysql | xargs -t docker rmi
|
1
| docker ps -a | e grep -v 'mysql|post|kiban|elas|mongo' | awk '{print $1}' | xargs -t docker rm
|
有些时候会有些<none>
的镜像,如下List-3,可能是临时产生的,删除这种镜像,直接用上面的是不行的
这种,注意awk中要用\t隔开,后面的awk才能得到我们想要的$2
1
| docker images | awk '{print $1"\t"$2"\t"$3}' | grep "<none>" | awk '{print $3}' | xargs -t docker rmi
|
或者下面这种
1
| docker images | grep "<none"| awk '{print $3}'|xargs -t docker rmi
|
1
| docker ps -a | grep -E 'Exited|Created' | awk '{print $1}' | xargs -t docker rm
|
- 清理无用镜像
它支持的子命令有:
-a, --all
: 删除所有没有用的镜像,而不仅仅是临时文件
-f, --force
: 强制删除镜像文件,无需弹出提示确认
- 清理所有无用volume、image、container、network
注意:慎用,删除所有不在使用的资源