#清理卷
docker volume prune
#清理镜像
docker image prune
#清理容器
docker container prune
#清理所有包括:dangling镜像
docker system prune
#清理所有,包括未正在使用未正在运行的,可能暂时停止的也会被清【慎用】
docker system prune -a
#如果有buid构建操作,也可以清理
docker builder prune
确定磁盘占用情况
docker system df -v
会列出如下四项占用情况
du -h -d 1 .
# -h人性化显示
# -d 1深度为1,也就是统计当前的目录列表
#批量查询占用空间大的目录被谁使用
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep 目录名称
查找到具体容器后, 分析具体的占用,很可能是容器内的日志未挂载出来,在容器内占用大量空间
[root@localhost overlay2]# du -h . -d 1|grep G
1.1G ./eee3dd098c1ee4a27787e59a263c8ad7c2b100c83661ca35254cf84f790dd6b5
1.8G ./6d5325096b29ce9662bf3ab7fc0dfdc515b6a1e3ec235a905cd3b2d988fa34a3
5.0G ./f6196ccb8087085ae04c464263017bfbbd9a6bc4da284114a4678e1bfb67c2b4
41G ./427ff3952fdad65f0fb8581f5ccc9c5f0d405c2720ca0a612703aacd71481a52
1.4G ./af233808fb6734a00f3795d71460b0290328a38a5051466ab112d86df066e459
8.5G ./e30b59f92a59033c84fd3bec986d46be00f91c950803c7a8116f7949d44b219e
通过查找超过1G的目录,发现一个41G大小的目录 ,但未关联上任何的容器,已经关闭的容器也未存在;
说明是已经被删除的容器,但为什么未被同时删除?
进入427ff3952fdad65f0fb8581f5ccc9c5f0d405c2720ca0a612703aacd71481a52目录,进到到diff子目录,发现是nacos的日志文件,以前确实存在容器内的日志未挂载出来的现象;后来已经修正,但不知这里还存在未被清理的内容;
确定确实无任何容器挂载,以后也不会有容器挂载这个目录,直接rm
#批量查询占用空间大的目录被谁使用
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep 此目录
#查看有问题的此目录有哪些进程在使用
fuser -uv /var/lib/docker/overlay2/427ff3952fdad65f0fb8581f5ccc9c5f0d405c2720ca0a612703aacd71481a52
#再次使用lsof查找此目录下最后时间的文件是否被占用
lsof |grep access_log.2022-10-30.log
#确定上面三个操作无任何挂载后,开始删除目录
rm -f 427ff3952fdad65f0fb8581f5ccc9c5f0d405c2720ca0a612703aacd71481a52