跳到主要内容
Mole
概览 功能 口碑 定价 常见问题 博客
EnglishEN 简体中文中 繁體中文繁 日本語日 한국어한 FrançaisFR DeutschDE ItalianoIT EspañolES
立即购买购买 下载

    帮助、文档、更新日志和文章

    首页/博客

    如何清理 Docker for Mac,又不丢数据

    开发者清理发布于 2026年6月26日更新于 2026年9月5日约 3 分钟

    Docker Desktop 的镜像、容器可写层、构建缓存和数据卷都放在 Linux 虚拟磁盘中,很容易占用几十 GB,其中构建缓存通常能重建,数据库卷却可能是重要数据的唯一副本,所以 Docker 自己的清单比范围最大的 prune 命令更适合作为起点。

    为什么空间没有立刻回来

    Docker Desktop 在 macOS 上运行一台 Linux 虚拟机,数据通常保存在稀疏虚拟磁盘 Docker.raw 中,它的 Mac 存储说明给出了入口:「Docker Desktop > Settings > Resources > Advanced」,这里能看到位置、上限和实际占用,也能安全移动虚拟磁盘,直接用 Finder 搬动则可能破坏配置。

    稀疏文件的逻辑上限可能很大,实际分配却小得多,所以 ls -lh 看到的数字不能代表真实占用,Docker 内部统计更接近各类对象的实际情况:

    docker system df -v
    

    详细视图会分开列出镜像、容器、数据卷和构建缓存,其中「Reclaimable」只表示 Docker 没发现当前引用,并不能判断以后是否还会用到已停止容器、旧镜像或数据卷,docker ps -a 和 docker volume ls 可以补上这部分背景。

    从范围最小的清理开始

    直接删除虚拟磁盘文件等同于丢掉整个 Docker 环境,按类别从 Docker 内部回收更容易控制范围:

    docker builder prune --filter until=168h
    docker image prune
    docker container prune
    

    第一条移除符合筛选条件的七天前未使用构建缓存,可以按自己的工作周期调整,后两条会在删除悬空镜像和已停止容器前确认。prune 不经过废纸篓,也不能撤销;停止的容器仍可能有唯一的可写层数据,悬空镜像也未必能重新取得,确认不再需要或已有可验证备份后再继续。每一步之后重新运行 docker system df -v,看实际回收了什么。

    Docker 的清理说明把 docker system prune 定义为范围更广的便捷命令,加入 -a 会删除所有未使用镜像而不只是悬空层,加入 --volumes 还会处理未使用的匿名数据卷,其中可能有数据库和其他状态。

    docker system prune -a --volumes 的范围很宽,尤其会触及可能保存数据库的数据卷,卷名、标签和归属可以先这样查看:

    docker volume ls
    docker volume inspect <volume-name>
    

    Compose 数据卷通常带有项目与服务标签,确认所属项目后,优先用数据库自身工具导出数据;做文件级备份前先停止写入,并检查备份能否恢复,再删除无法重建的数据所在卷。

    让虚拟磁盘归还物理空间

    prune 会先在 Linux 文件系统内部释放块,macOS 不一定同时拿回空间,当前 Docker 文档说明 Docker.raw 通常会在数秒内归还符合条件的块,旧式 Docker.qcow2 依赖后台过程,可能要几分钟。

    这里更有意义的是重新测量物理占用而不是逻辑上限,恢复出厂设置也不是压缩,它会销毁本地容器、镜像、数据卷和设置,只适合已经决定丢弃整个环境并导出重要数据的情况。

    Docker.raw 为什么只增不减

    Docker.raw 是 Linux 虚拟机的稀疏磁盘,来宾系统写入时它会增长,删除对象时则先把来宾文件系统中的块标为空闲,只有来宾发出 TRIM 或 discard、Docker Desktop 再执行相应回收,macOS 才能拿回符合条件的物理块,时间取决于 Docker Desktop 版本和磁盘镜像实现。

    因此要分别测量 Docker 内部逻辑空间和 macOS 物理容量,直接删除 Docker.raw 等同于销毁整个 Docker 环境。

    稀疏 Docker.raw 文件随来宾虚拟机写入而增长,并通过 discard 与压缩把符合条件的块归还给 macOS。
    删除 Docker 对象先释放虚拟机内部空间,之后才可能把物理空间归还 macOS。

    磁盘地图能看到什么

    Mole 的「分析」页可以发现虚拟磁盘及其实际物理占用,Docker 命令行则负责判断内部对象的引用关系,前者回答空间在哪里,后者回答里面是什么。

    安全的操作顺序

    一个较容易复核的顺序是:运行 docker system df -v,确认旧项目和有状态数据卷,导出唯一数据,再逐类清理,并在每一步复查 Docker 统计和 macOS 容量,最容易安全回收的通常是旧构建缓存,而不是身份不明的数据卷。

    Mole 清理缓存和软件残留,不少用户一次就清出了上百 GB。

    下载试用 Mole

    继续阅读

    • 开发者清理如何清理开发工具缓存,又不破坏构建约 3 分钟
    • 开发者清理如何清理 Xcode,又不丢失发布归档约 2 分钟
    • 开发者清理Mac 上如何用 brew cleanup 和 autoremove 清理 Homebrew约 2 分钟

    Mole · 鼴

    清理 Mac,管理软件,查看运行状态

    v1.14.0 · 更新日志

    产品

    Mac 清理 App 卸载 Mac 优化 磁盘分析 系统监控

    支持

    帮助 功能文档 更新日志 博客

    法律

    服务条款 隐私政策 退款政策

    资源

    命令行工具 推广联盟

    联系

    Twitter hi@mole.fit

    Mole 唯一官网 mole.fit · 请勿下载来源不明的安装包

    命令行版继续免费开源。