docker 日志过大,overlay占用磁盘空间过大问题
clean.sh (参考链接:https://www.cnblogs.com/98record/p/docker-qing-li-ri-zhi-jiao-ben.html)
#!/bin/sh
# 此脚本为日常清理docker日志
# docker 容器的路劲日志为 /var/lib/docker/containers/ 下-json.log
# 清理的方式有两种
# 1、直接RM -f /var/lib/docker/containers/ *-json.log
# 这种方式必须停止docker才能释放空间,否则日志文件一直处于写入(占用)状态,无法清理
# 2、使用cat /dev/null > $log 方式,这样可以直接替换日志文件里面的内容,将日志直接清空
# 本脚本使用的是第二种方法
# 开始清理日志提示
echo "====================$(date "+%Y-%m-%d %H:%M:%S") Start clean docker containers logs >= 1G =========================="
#定义日志路径
logs=$(find /var/lib/docker/containers/ -name *-json.log -type f -size +1G)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
# 清理完成
echo "==================== $(date "+%Y-%m-%d %H:%M:%S") end clean docker containers logs =========================="
docker system prune 命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
docker system prune -a 命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉
root@master:/var/lib/docker/overlay2# find . / -name *json.log
搜索所有的日志文件
在目录中会存在以目录名为前缀,以“-json.log”为后缀的目录文件。使用如下命令会看到该文件的大小:
ll -h
然后可使用如下命令对该文件的内容进行清理:
cat /dev/null > *-json.log
清理完成可不重启服务,但如果允许建议重启一下docker服务。
在此执行df -h命令之后,你会发现overlay2所占的磁盘空间已经减小。
使用Docker过程中,长时间运行服务容器,导致不能进行上传文件等操作,通过命令df -h 发现overlay占用较高。通过命令
docker system prune -a
清理无用镜像、缓存、挂载数据
prune指令默认会清除所有如下资源:
已停止的容器(container)
未被任何容器所使用的卷(volume)
未被任何容器所关联的网络(network)
所有悬空镜像(image)。
Docker中查询磁盘占用情况:
docker system df
https://blog.csdn.net/sky527759/article/details/122834872
find / -type f -size +1G
-type f :文件类型,-type d:文件夹,-size +1G查找超过1G的文件