
背景
最近在线上巡检多台服务器的时候,发现容器目录特别庞大。
由于线上环境服务较多,所以很谨慎的进行了排查。最终发现docker容器自身在运行时产生一个以容器id-json命名的log文件。对于部署高频服务的容器,时间长了占用磁盘空间会超级大。
查看docker容器日志路径
# docker inspect --format='{{.LogPath}}' e3b9d8ce0d63
/data/docker/containers/f825.....fad1f24372d-json.log
# 该日志可以直接访问
tail -f /data/docker/containers/f825.....fad1f24372d-json.log
解决方案
一、临时手动清空log日志
cat /dev/null > 容器id-json.log
echo '' > 容器id-json.log
可以查看所有容器日志路径:
find /data/docker/containers/ -name *-json.log
结果如图:

批量删除
#!/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 ========"
二. 运行时指定参数
docker run -it --log-opt max-size=24m --log-opt max-file=2 alpine ash
max-size 日志最大限制
max-file 日志最数量

三、修改全局配置文件
创建或修改文件 /etc/docker/daemon.json,并增加以下配置
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m","max-file":"1"
}
}
然后记得重启dokcer。
需要注意的是:已存在的容器不会生效,需重建容器。
文章参考 解决docker运行日志太大问题_docker日志文件过大-CSDN博客
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...


