#!/bin/bash
#删除过期镜像,保留最新5个版本

CDATE=`date '+%Y-%m-%d_%H:%M:%S'`

#######nexus,经常发版的关键字是"springcloud"
for service in `docker images | grep 'springcloud' | awk '{print $1}' |sort -u`
do
        for i in `docker images | grep $service | awk '{print $2}' | awk -F"-"  '{print $1}' | sort  -u`
        do
                banben=`docker images | grep $service | awk '{print $2}' | grep $i`
                mem=`docker images | grep $service | awk '{print $2}' | grep $i |wc -l`
        done
        echo $banben
        if [[ $mem -gt 5 ]];then
                arr=(${banben// /})
                #保留同样类型的5个镜像
                for(( j=5;j<${#arr[@]};j++)) do
                        docker rmi $service:${arr[j]}
                        echo "docker rmi $service:${arr[j]}   执行时间:$CDATE" >> /home/log_delete_images.log
                done
        fi
done

因k8s的开发环境经常发版,导致镜像太多,占用磁盘空间,该脚本只保留5个同类型的镜像,例如:
a.service有镜像qa-1,qa-2,qa-3,qa-4,qa-5,qa-6,debug-qa-1,debug-qa-2,debug-qa-3,debug-qa-4,debug-qa-5,debug-qa-6

执行之后会删掉qa-1,debug-qa-1,其他的都保留

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐