V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
FakerLeung
V2EX  ›  Docker

/var/lib/docker 体积太大了?要怎么清理才行?

  •  
  •   FakerLeung · 22 小时 33 分钟前 · 696 次点击

    已经达到 72g 了,执行过 docker system prune 了,还是有 72g🥵救救孩子

    第 1 条附言  ·  6 小时 12 分钟前

    根据大佬们的回复,执行几个命令,大概清理了 30G 的容量:

    1. 清理 docker 的各种资源:docker system prune -a
    2. 有的容器用的 docker-compose 启动,用了挂载卷,容器删了,挂载卷残留,删掉
    docker volume ls -f dangling=true
    docker volume rm $(docker volume ls -qf dangling=true)
    
    1. 看现存容器哪几个体积比较大,再分析:docker images -a --digests

    目前已经删了 30G,大部分是因为直接通过 1panel 的编排启动和删除的,有一个是因为 immich 的上传图片都在 volume 里了,还有就是当时部署着玩的 ollama 和 open-webui,都没用上,结果这俩就占了 9G。

    20 条回复    2025-02-08 15:50:53 +08:00
    MADBOB
        1
    MADBOB  
       22 小时 31 分钟前 via iPhone   ❤️ 1
    docker system prune -a
    FakerLeung
        2
    FakerLeung  
    OP
       22 小时 29 分钟前
    @MADBOB 就是执行的这个🤣🤣
    joyhub2140
        3
    joyhub2140  
       22 小时 9 分钟前   ❤️ 1
    你绝对是往容器里写数据了,检查一下哪里忘记了挂载 volume 吧。

    有状态的容器需要把写入点挂在到外部空间的。
    yinmin
        4
    yinmin  
       22 小时 9 分钟前   ❤️ 1
    运行 docker system df 看看啥情况
    cdlnls
        5
    cdlnls  
       22 小时 9 分钟前   ❤️ 1
    看看是不是运行中的容器占用了,比如说写了很多日志文件放在容器里面。
    ksc010
        6
    ksc010  
       22 小时 7 分钟前   ❤️ 1
    我之前遇到过一次, 最后发现是容器的 /tmp/目录临时文件太多了
    yinmin
        7
    yinmin  
       22 小时 7 分钟前   ❤️ 1
    运行:docker system df -v
    FakerLeung
        8
    FakerLeung  
    OP
       22 小时 2 分钟前
    @yinmin

    root@server:/var/lib/docker# docker system df
    TYPE TOTAL ACTIVE SIZE RECLAIMABLE
    Images 20 20 17.81GB 160.5MB (0%)
    Containers 20 20 180MB 0B (0%)
    Local Volumes 12 2 1.385GB 584.6MB (42%)
    Build Cache 0 0 0B 0B
    FakerLeung
        9
    FakerLeung  
    OP
       22 小时 1 分钟前
    @yinmin -v 太多了,也稍微看出一点信息了。谢谢老哥。
    yinmin
        10
    yinmin  
       21 小时 41 分钟前
    @FakerLeung -v 出来的结果看最上面的 Images space usage 、Containers space usage 、Local Volumes space usage ,看看哪些镜像和容器占用空间大。

    你的 docker 文件合计大概占了大概 20GB 左右,不过 docker 的小文件太多了,占了磁盘 72GB 的空间。因为:ext4 最小存储单位好像是 4KB ,也就是文件只有 1 字节也要占 4KB 硬盘存储。

    你希望 docker 占空间少,可以试试开启压缩功能的 btrfs 磁盘格式,我有 1 个设备没用 ext4 ,而是使用压缩 btrfs ,docker 文件合计 3.3GB ,但是 df -h 显示磁盘仅占用 2.7GB 。
    FakerLeung
        11
    FakerLeung  
    OP
       21 小时 14 分钟前
    @yinmin 我这个是 pve 上的 vm ,回头研究下怎么开。
    weenhall5
        12
    weenhall5  
       13 小时 3 分钟前
    看下是不是日志文件没有及时清理
    wangmn
        13
    wangmn  
       12 小时 39 分钟前
    上次 容器的日志 给我把硬盘干满了,删了容器 调整启动命令 限制日志大小才搞定
    FakerLeung
        14
    FakerLeung  
    OP
       12 小时 27 分钟前
    @weenhall5 #12 要咋看?
    Yanlongli
        15
    Yanlongli  
       12 小时 4 分钟前
    先检查是否镜像占用较大
    docker images -a --digests

    再检查容器
    docker ps -as

    如果是容器占用较大,进入容器目录排查哪个目录或文件较大进行清理

    du -d1 -h
    FakerLeung
        16
    FakerLeung  
    OP
       11 小时 6 分钟前
    @Yanlongli #15 immich 2 个容器占了 3G ,homeassistant 占了 2G ,open-webui 和 ollama 占了 9G ,这俩我只是单纯跑起来了,还没用
    miaoxiaomayi
        17
    miaoxiaomayi  
       9 小时 55 分钟前 via iPhone
    @joyhub2140 写好 volume 后 之前的数据从哪清理呀
    joyhub2140
        18
    joyhub2140  
       9 小时 34 分钟前
    @miaoxiaomayi 没有重要数据的话,把容器删了重新起一个,记得设置到挂载 volume 。
    memorycancel
        19
    memorycancel  
       8 小时 11 分钟前   ❤️ 1
    overlay2 72G 目测是挂载卷太大了
    是不是有的容器用了挂载卷,容器删了,挂载卷留里边成了 dangling ?

    docker volume ls -f dangling=true
    docker volume rm $(docker volume ls -qf dangling=true)
    FakerLeung
        20
    FakerLeung  
    OP
       6 小时 8 分钟前
    @memorycancel #19
    确实有残留。感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2800 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:59 · PVG 21:59 · LAX 05:59 · JFK 08:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.