VPS磁盘空间分析&Docker日志文件清理
1. 使用指令查看系统空间使用情况
df -h
可以看到,40GB 的空间已经被使用了 36G 了,就剩下 2.2G,根本没法使用。
2. 使用指令查看 docker 占用空间docker system df
可以看到,docker 占用的空间也不大,合起来都没有 2G
3. 再次使用指令查看具体的占用情况docker system df -v
看起来也没有太多无效的镜像
4. 例行使用指令清除了部分无效的空间,不使用的镜像,但是发现只释放了一小部分的空间。
docker system prune -a
5. 接下来,通过命令查看哪一个目录占用的空间最多
du -s /* | sort -nr
发现/var
目录占用的空间是最多的,刚好在 35G 左右,和上面的已使用的空间对上来了,看来问题就在这里面
6. 那么现在使用指令进入到 var
目录下
cd var
7. 使用指令查看当前目录下文件夹大小情况
du -h --max-depth=1
是 lib 目录占用了 33G 的空间。
8. 继续使用反复使用指令 cd lib
进入到 lib 目录下,使用指令 du -h --max-depth=1
查看当前目录下文件夹大小情况
9. 最终是一个 -json.log 文件占用了 28G 的空间,看来是 docker 生成的日志文件,那么就是需要清除此文件,释放空间了。
处理方案:
1. 直接删除该文件,但因为该文件在 docker 运行时有程序占用,因此可能无法清除。所以需要重启 docker,把容器停止后删除。
2. 使用 cat /dev/null > *-json.log
命令进行清除,这样不需要重启 docker,只是把该文件的内容清空。
需要注意的是:上面的解决方案只是暂时的,清除之后,docker 依旧会继续产生日志,所以下次还需继续清除。
查看 docker 日志文件的方法
docker logs -f 容器 ID/ 容器名
在 linux 上,一般 docker 的日志文件存储在 /var/lib/docker/containers/container_id/ 目录下的 各个容器 ID 对应的目录下的 *-json.log 文件中
方法 1:可以直接进入该目录下,查找日志文件
方法 2:可以写一个脚本文件,执行即可
创建 docker_log_size.sh 文件
为该文件设置权限
执行该文件
设置 Docker 容器日志文件大小限制
1. 新建/etc/docker/daemon.json
,若有就不用新建了。添加 log-dirver 和 log-opts 参数,样例如下:
max-size=500m,意味着一个容器日志大小上限是 500M,
max-file=3,意味着一个容器有三个日志,分别是 id+.json、id+1.json、id+2.json。
2. 然后重启 docker 的守护线程
命令如下:
【需要注意的是:设置的日志大小规则,只对新建的容器有效】