今日在查看公司本地服务器的时候发现磁盘空间几乎要用完了,调查了一会发现是使用 docker 部署的 gitlab 容器产生了大量的日志文件,文件大约占用了 30G+,gitlab 容器大约运行了 2 年左右。这里记录下查找和解决过程。
介绍几个 Linux 命令
df -h 查看整个磁盘的空间使用情况
du -sh /* 查询某个路径下的数据大小
docker system prune -a 清理 docker 容器
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr 查找"/"目录下所有大于100M的所有文件
echo "" > xxx.log 将 "" 写入到 xxx.log 文件中,从而使该文件大小瞬间变为 0
docker run ...... --log-opt max-size=10m --log-opt max-file=1 对标准输入日志大小与数量进行限制
过程
今日在查看公司本地服务器的时候发现磁盘空间几乎要用完了,于是使用 du -sh /*
对根目录下所有目录计算大小,最后定位到是 /var/lib/docker/containers/{container_id}/
下存在数据较大的 *-json.log
日志文件,于是使用 echo "" > xxx.log
的方式重置该文件大小。
解决方案
1.用 echo "" > xxx.log
的方式重置该文件大小。
但是这个只是治标不治本的方法,归根结底控制这个 log 文件的生成策略才是上策。
2.新建或修改/etc/docker/daemon.json
{
"log-driver":"json-file",
"log-opts": {"max-size":"10m", "max-file":"1"}
}
设置 docker 只生成一个大小最大为 10M 的日志文件。