1、docker文件系统占用分析
du -sh /var/lib/docker/*
看到占用磁盘空间最大的目录是docker存储根目录下的overlay2目录
再查看docker存储根目录下的overlay2目录下哪个目录占用空间最大
du -s /var/lib/docker/overlay2/*|sort -rn
找出最大的这个overlay2目录的目录名是:ef129273a3f100feec4970bee90b0b83d9f1b170f6a76668eba9bdcfbf5f4ac8
下面需要使用这个目录名字符串去反向查找这个目录属于哪个容器,找到这个容器,就可以做进一步问题处理。这个容器就是导致磁盘空间爆满的罪魁祸首。
2、使用shell脚本通过overlay2 目录名查找对应容器
vi locateContainer
containerIDList=$(docker ps -aq --no-trunc)
echo -n "Enter the target DirectoryName to search and locate around all containers: "
read target
for containerID in $containerIDList
do
b=$(docker inspect $containerID|grep MergedDir|grep $target|wc -l)
containerName=$(docker inspect --format '{{.Name}}' $containerID|awk -F "/" '{print $2}')
if [ $b -ge 1 ];
then
echo ""
echo "命中,正在遍历容器:$containerName,结果是命中."
echo ""
else
echo "未命中,正在遍历容器:$containerName,结果是未命中."
fi
done
bash locateContainer
会提示输入查询的overlay2 目录名:ef129273a3f100feec4970bee90b0b83d9f1b170f6a76668eba9bdcfbf5f4ac8
然后输出命中的容器名称:xxx
3、docker 命令输出中go模版过滤使用
以docker inspect 命令为例
比如查找容器ID为30a489f2d2e92324e8d2938c126da6754a18f68330664f255c3cb53c5d57445c的容器的Merge目录
docker inspect --format '{{.GraphDriver.Data.MergedDir}}' 30a489f2d2e92324e8d2938c126da6754a18f68330664f255c3cb53c5d57445c
go 模版写法参照下图
.GraphDriver.Data.MergedDir
层级结构如下
通过命令
docker inspect 30a489f2d2e92324e8d2938c126da6754a18f68330664f255c3cb53c5d57445c|less
然后搜索想要的特定项目 比如GraphDriver文章来源:https://www.toymoban.com/news/detail-598041.html
文章来源地址https://www.toymoban.com/news/detail-598041.html
到了这里,关于docker磁盘空间爆满 通过overlay2 目录名查找对应容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!