【Shell脚本5】Docker日常巡检脚本(日志清理、磁盘空间)

#!/bin/bash

##check workdir##
if [ `ls /var/lib/docker/ | grep overlay2 | wc -l` -ne 0 ]
then
    dir="/var/lib/docker/"
else
    dir="/data/docker/"
fi

##clean container's log##
for log_dir in `du -sh $dir/containers/* | grep G | awk '{print $2}'`
do
    file_name=`echo $log_dir | awk -F "/" '{print $6}'`
    > $log_dir/$file_name-json.log
done


##container space check##
for overlay2_dir in `du -sh $dir/overlay2/* | grep G | awk '{print $2}'`
do
    overlay2_dir_G=`du -sh $overlay2_dir | grep G | cut -d 'G' -f 1 | cut -d '.' -f 1`
    if [ $overlay2_dir_G -gt 30 ]
    then
        overlay2_file_name=`echo $overlay2_dir | awk -F "/" '{print $6}'`
        container_name=`docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "$overlay2_file_name" | awk -F ',' '{print $3}' | cut -d '/' -f 2`
        pod_name=`echo $container_name | awk -F '_' '{print $3}'`
        ns=`echo $container_name | awk -F '_' '{print $4}'`
        if [ `echo $container_name | grep '_' | wc -l` -ne 0 ]
        then
            echo -e "container:$container_name \nnamespace:$ns \npod:$pod_name \n该容器占用磁盘空间$overlay2_dir_G G,需检查"
        else
            echo "$overlay2_dir无运行容器实例,可执行docker system prune -a --volumes释放空间"
        fi
    fi
done

你可能感兴趣的:(docker,容器,运维)