..

jenkins slave 清理过期镜像的方法

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

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

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 上可以创建如下任务来删除这些没有作用的镜像。

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")
                        })
            }
        }
    }
}