今天收到阿里云报警,通知磁盘空间快满了,于是进行检查清理。
第一步:清理 k8s日志
第二步:清理docker 镜像
docker image prune -a
第三步:检查磁盘空间发现作用并不大。
df -h
第四步:检查docker目录下的overlay目录大小
du -sh –max-depth=1 /var/lib/docker
第五步:查找overlay2 相关的容器占用空间情况
cd /var/lib/docker/overlay2/
du -s ./* | sort -rn | more
我发现有一个占用100多个g的目录
第六步:根据目录id 查找对应的容器名称
docker ps -q | xargs docker inspect –format ‘{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}’ | grep 7832e723e7974656ef300d74738edeb9a65340dca66bca758c4cfa6e91429686
第七步:根据容器名称找到对应的容器的镜像,定位服务
docker ps |grep ${container_id/name}
第八步:进入容器查看情况
docker exec -it xxxx /bin/bash
我发先是容器里面的debug日志比较大,然后删除debug日志,问题得到解决
第九步:查看磁盘占用情况
ps:另外一种方案
1. ncdu -e /定位大文件。 界面中可以h获取帮助
2. for container in $(docker ps –all –quiet –format ‘{{ .Names }}’); do
echo “$(docker inspect $container –format ‘{{.GraphDriver.Data.MergedDir }}’ | \
grep -Po ‘^.+?(?=/merged)’ ) = $container”
done 获取id与容器的对应