满了问题排查"/>
docker 磁盘满了问题排查
问题描述
TOS 集群下某个节点 /var/lib/docker 目录满了,比如 目录总大小为200G,占用了194G。
问题分析
此问题一般是由于容器内数据递增,没有做自动清理,或是数据目录没有挂载出来导致。
排查思路
进入 /var/lib/docker 目录,使用 du -sh 等查询磁盘空间大小的命令,一层层向下找,找到占用空间最大的一个目录,根据 docker inspect 命令和容器 layyer 名称,反推得到 container-id,确定了具体容器,然后重启容器释放磁盘空间或查看具体原因具体操作。
步骤
确认占用磁盘空间最大的 layyer 目录
# cd /var/lib/docker# du -sh * | grep G# cd xxx ##进入到上步占用空间最大的目录# du -sh * | grep G ##再次查询占用空间最大的目录,直到找到类似 /var/lib/docker/overlay2/2ae66baf192c3f8893b804efffb2cd0a892bee3e9ec9e2d398c9a6c78d8464e6 这样带有一长串字符串的目录
根据目录确认占用空间大的容器
在出问题的节点上,执行如下命令# for i in `docker ps -a| awk '{print $1}' | grep -v CONTAINER`;do echo $i;docker inspect $i | grep xxxx ; donexxxx 指上一步 2ae66ba...,输出结果有 2ae66ba... 的 对应的 container-id 即为我们所要找的 container-id。例如:下图中的 257c6df 结尾的 container-id 就是我们要找的容器。
释放空间
a. 测试环境,可以直接删除上一步获取的容器,磁盘空间就会释放。这种情况里面的数据会被清空。具体命令如下: docker rm container-id ##container-id为上一步获取的
b. 生产环境,建议进入到容器里面,确认下具体占用磁盘空间的目录,看是否是预期的,然后具体问题具体处理。
更多推荐
docker 磁盘满了问题排查
发布评论