macos docker使用磁盘空间不够?3招清理技巧省出20GB,macOS Docker磁盘空间不足?三步轻松释放20GB空间

同事的MacBook Pro用了半年Docker,硬盘愣是被吃掉120GB!删项目删照片都不顶用,最后重装系统才救回来😤——​​Docker悄咪咪占空间的毛病,坑过多少程序员?​​ 今天教你3招根治,不删文件也能省出20GB!


💾 ​​Docker偷空间的3大黑洞​

  1. ​镜像越堆越多,还不让删?​

    拉个Ubuntu镜像就​​1.3GB​​,MySQL再占​​500MB​​... 更坑的是,旧版本镜像默认​​不自动清理​​!用docker images一看,几十个镜像吃光一半硬盘。

  2. macos docker使用磁盘空间不够?3招清理技巧省出20GB,macOS Docker磁盘空间不足?三步轻松释放20GB空间  第1张

    ​日志文件疯狂膨胀​

    容器日志默认存在~/Library/Containers/com.docker.docker里。有个哥们跑了半年Elasticsearch,日志直接飙到​​70GB​​,系统盘直接红了!

  3. ​缓存和卷的隐藏陷阱​

    Docker的构建缓存、临时卷,甚至docker build的中间层——全在后台偷偷占地儿。有个项目编译镜像时,光缓存就攒了​​15GB​​垃圾文件!

​血泪公式​​:Docker空间 = 镜像仓库 + 日志坟场 + 缓存黑洞


🧹 ​​救命3招:清出20GB实操指南​

✅ 第一招:精准删除镜像(省5-10GB)

​别再用docker rmi手动删了!​​ 用这俩命令扫荡冗余镜像:

bash复制
# 删掉所有悬空镜像(无名无tag的)  docker image prune -f# 删掉超过3个月的旧镜像  docker image prune -a --filter "until=720h"

​实测效果​​:某前端项目清出​​8.4GB​​,比手动删快10倍!


✅ 第二招:日志限流术(省10GB+)

​根治日志膨胀,两步搞定​​:

  1. ​限制单个日志大小​

    ~/.docker/daemon.json里加配置(没有就新建):

    json复制
    {"log-driver": "json-file","log-opts": {"max-size": "10m",  // 单个日志最大10MB  "max-file": "3"     // 只保留3份  }}
  2. ​一键清空现有日志​

    bash复制
    sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"

    ​注意​​:清空前停掉Docker,否则日志可能继续写!


✅ 第三招:缓存核弹(省5GB)

Docker BuildKit的缓存才是空间杀手!用这个命令连根拔起:

bash复制
docker builder prune --all --force

某Python项目清理后,.cache文件夹从​​7GB→200MB​​,堪比魔法!


⚠️ ​​这些操作=作 *** !​

  • ​直接删/var/lib/docker文件夹​​:导致镜像全丢失,容器全崩溃!

  • ​用CleanMyMac清Docker​​:误删核心文件,重装都救不回来。

  • ​放任磁盘满90%​​:Docker自动 *** ,容器集体卡 *** !

​避坑口诀​​:清理用Docker自带工具,空间低于85%就动手!


💡 ​​玄学冷知识:空间去哪了?​

虽然用docker system df能看空间占用,但​​“其他磁盘用量”​​ 这栏永远算不准!

有次我清完缓存,显示省了10GB,结果硬盘只腾出3GB——剩下7GB或许暗示被​​系统Time Machine​​或​​Docker虚拟机快照​​吞了,具体机制至今没搞懂...

不过话说回来,M1芯片的Mac更邪门:Docker的ARM镜像体积比Intel小30%,但缓存反而更占地方!


🚨 ​​终极建议:预防>抢救​

把这三行写进~/.zshrc,每周自动清一次:

bash复制
# 周一早上9点自动清理  0 9 * * 1 docker image prune -f && docker builder prune --all --force

​硬核玩家​​再加条:

bash复制
# 每次退出终端时清日志  trap "docker system prune -f --volumes" EXIT

记住:​​Docker不是貔貅,只进不出早晚崩盘!​