jenkins slave 清理过期镜像的方法

jenkins 上一直在不停的构建新的镜像,导致镜像越来越多,写满了 /var/lib/docekr 所在的分区,所以我们需要定期的清理多余的镜像。

一般的,我们在开发周期构建镜像的时候,没有修改过镜像的版本号码,一个进行不停的 retag , 这样老的镜像的 tag 就会被覆盖,tag 变成 none。

1
2
3
4
node                                                        8                        0bf36d7ccc1e        4 weeks ago         895MB                                                             
maven 3-jdk-8 f44a5194086a 5 weeks ago 636MB
<none> <none> 6752e2093697 5 weeks ago 12.9MB
swaggerapi/swagger-ui latest 6f941e6fd913 5 weeks ago 51.7MB

这种 tag 为 none 的镜像就已经可以删除了。 jenkins 上可以创建如下任务来删除这些没有作用的镜像。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pipeline {
agent {
label "node1"
}
stages {
stage("clean images with tag none"){
steps {
parallel(
node1: {
sh("docker image ls | grep none | awk '{print \$3}' | xargs -I {} docker rmi {} || true")
},
node2:{
sh("docker image ls | grep months | awk '{print \$3}' | xargs -I {} docker rmi {} || true")
})
}
}
}
}