• 清理docker占用磁盘空间(docker默认目录存在未被管理的空间)


    粗化清理

    #清理卷
    docker volume prune
    
    #清理镜像
    docker image prune
    
    #清理容器
    docker container prune
    
    #清理所有包括:dangling镜像
    docker system prune 
    
    #清理所有,包括未正在使用未正在运行的,可能暂时停止的也会被清【慎用】
    docker system prune  -a
    
    #如果有buid构建操作,也可以清理
    docker builder prune
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    精确化清理

    确定磁盘占用情况
    docker system df -v
    
    • 1
    • 2

    会列出如下四项占用情况

    • Images space usage:
    • Containers space usage:
    • Local Volumes space usage:
    • Build cache usage:
      根据具体业务需求,删除指定的内容即可

    通过默认目录/var/lib/docker/overlay2确定清理

    • 进入/var/lib/docker/overlay2
      执行统计命令
      du -h -d 1 .
      # -h人性化显示
      # -d 1深度为1,也就是统计当前的目录列表
      
      • 1
      • 2
      • 3
    • 查询目录是被什么容器占用
    #批量查询占用空间大的目录被谁使用
    docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep  目录名称
    
    • 1
    • 2

    查找到具体容器后, 分析具体的占用,很可能是容器内的日志未挂载出来,在容器内占用大量空间


    问题来了,清理未被任何容器挂载的目录(意外)

    [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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    通过查找超过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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    葡萄糖-顺铂Glucose-cisplatin|葡萄糖-聚乙二醇-顺铂cisplatin-PEG-Glucose
    22071驱动day1
    8086汇编debug命令
    一起误删cni0虚拟网卡引发的k8s事故
    Unity基础课程之物理引擎7-物理运动应该在FixedUpdate执行
    【附源码】Python计算机毕业设计木几画室管理系统
    Linux下OpenJDK的下载和安装
    我用PYQT5做的第一个实用的上位机项目(六)
    力扣(LeetCode)128. 最长连续序列(C++)
    【GPGPU编程模型与架构原理】第一章 1.1 GPGPU 与并行计算机
  • 原文地址:https://blog.csdn.net/atzqtzq/article/details/128162537