前言
在使用docker
部署springboot
项目时,随着时间的推移,springboot
项目会产生许多日志记录,会占用许多服务器磁盘空间,导致服务器性能下降,所以我们需要定期清理docker
部署的容器日志
手动清理
docker
的log日志
文件一般存放在/var/lib/docker/containers
文件夹中。
进入到该文件夹后,通过du -sh .
命令可以查看到当前文件夹下的文件的大小。
因为我刚才清理过一次,所以现在的文件不是很大。
因为我部署了三个容器,所以这里有三个文件夹,每个文件夹的名字开头对应的是容器id,这里我以springboot
的容器为例子,
springboot的容器id
为d82c4df86dc3
然后我们进入到d82c4df86dc3
开头的文件夹
cd d82c4df86dc391f1308a4271fd34009fcaf6c193e4c616c3a1d73589f201b634/
会看到相同名字的log
文件,这个文件就是日志记录,你可以直接用下面的命令删除该文件。
rm -rf d82c4df86dc391f1308a4271fd34009fcaf6c193e4c616c3a1d73589f201b634-json.log
删除后,还需要重启该容器,否则你查看日志时,会找不到该文件
docker restart d82c4df86dc3
通过rm -rf
或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink
)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用,所以必须重启容器。
或者用下面的一种方式
# 进入容器目录
cd /var/lib/docker/containers
# 查看哪个容器占用大
du -sh .
# 也可以具体进入某个容器
cd /var/lib/docker/containers/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05
# 查看文件大小
ls -l --block-size=m
# 清理日志
cat /dev/null > /var/lib/docker/containers/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05-json.log
自动清理
编写清理日志脚本clean_docker_log.sh
文件
代码如下:
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
执行clean_docker_log.sh
文件清理日志
# 授权
chmod +x clean_docker_log.sh
# 执行
./clean_docker_log.sh