WTMemory 指南

Mac 上 Docker 太占空间?

2026年10月13日更新

Docker Desktop 把所有 Linux 镜像、容器、数据卷和构建缓存都存放在一个磁盘映像文件 Docker.raw 里,所以你拉取和构建得越多,它就越大。运行 docker system df 看看空间被什么占用,再用下面的 prune 命令删除未使用的容器、镜像和构建缓存;数据卷留到最后再处理,因为里面存着数据。

先说明一点:本站介绍的 Mac 应用 WTMemory 有意不清理 Docker 数据。Docker 自己的命令才是合适的工具,本指南就介绍这些命令。WTMemory 只能显示 Docker 的内存和 CPU 占用,以及磁盘上文件夹的大小。

Mac 上 Docker 的数据存放在哪里?

默认情况下,磁盘映像位于:

~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

如果你移动过它,Docker Desktop 会在 Settings > Resources > Advanced > Disk image location 中显示当前位置。Linux 虚拟机里的所有内容,包括镜像、容器、具名数据卷和构建缓存,都存在这一个文件里。你无法像普通文件夹那样在访达中浏览它。

Docker.raw 实际有多大?

Docker.raw 是一个稀疏文件。访达和一些工具报告的是它的最大尺寸,而不是它在磁盘上实际占用的空间。Docker 官方的 Mac FAQ 建议这样检查:

cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
ls -klsh Docker.raw

第一个数字是实际的磁盘占用;这一行后面的大小列是文件能增长到的最大值。如果访达显示 64 GB,而 ls -klsh 只报告几 GB,那你并没有少那么多空间。

怎么查看 Docker 的空间用在了哪里?

在 Docker 运行时执行:

docker system df
docker system df -v

第一条命令输出 Images、Containers、Local Volumes 和 Build Cache 的总量,还有一列 RECLAIMABLE(可回收)。-v 版本会列出每个镜像、容器和数据卷及其大小,让你看出哪个数据卷是那个 20 GB 的数据库,哪个镜像是你拉过一次就忘了的。

每条 prune 命令分别删除什么?

以下说明依据 Docker 的 pruning 文档,核对于 2026 年 10 月 13 日。除非加上 -f,每条命令都会先要求确认。

命令删除的内容风险
docker container prune所有已停止的容器。低。写在已停止容器文件系统里(而不是数据卷里)的内容会丢失。
docker image prune仅悬空镜像(没有标签且未被使用)。低。
docker image prune -a所有未被现有容器使用的镜像。中。下次需要重新下载或重新构建。
docker buildx prune 或 docker builder prune悬空的构建缓存。加上 --all 则删除所有构建缓存。低。下次构建会变慢。
docker system prune已停止的容器、未使用的网络、悬空镜像和未使用的构建缓存。不会动数据卷。低到中。
docker system prune -a上述内容,外加所有未使用的镜像(不只是悬空镜像)。中。
docker system prune --volumes额外删除未使用的匿名数据卷。如果某个匿名数据卷里有你需要的数据,风险高。
docker volume prune未使用的匿名数据卷。具名数据卷不受影响。对有数据的匿名数据卷来说风险高。
docker volume prune -a所有未使用的数据卷,包括具名数据卷。最高。本地数据库就是这样没的。

数据卷警告:数据卷“未使用”只是说现在没有容器挂载它。如果你对一个带 Postgres、MySQL 或 MongoDB 服务的项目运行了 docker compose down,它的数据卷就处于未使用状态,但里面仍然存着数据库。prune 数据卷之前,先运行 docker volume ls,把你在意的东西备份好。

释放 Docker 磁盘空间的安全顺序是什么?

  1. 运行 docker system df -v,记下占用大的项目。
  2. 运行 docker container prune 删除已停止的容器。
  3. 运行 docker buildx prune 清理悬空的构建缓存,在经常构建的机器上,这往往是见效最快的一步。
  4. 如果不介意重新拉取镜像,运行 docker image prune -a。
  5. 逐个检查数据卷,用 docker volume rm <name> 删除特定的数据卷,而不是盲目 prune。
  6. 再次用 ls -klsh 检查 Docker.raw 的实际大小。

Docker 的 Mac FAQ 提到,在运行中的容器里删除文件时,空间并不总是会自动释放,所以文件可能不会立刻变小。

怎么限制 Docker.raw 的最大尺寸?

打开 Docker Desktop,进入 Settings > Resources > Advanced,调整 Disk usage limit,然后点击 Apply。Docker 的 FAQ 警告说,调小最大尺寸会删除当前的磁盘映像,所有容器和镜像都会丢失。请先备份数据卷。在同一部分,你还可以用 Docker Desktop 里的 Browse 选项把磁盘映像移到更大的硬盘上。不要在访达里移动它。

同一个 Resources 部分也可以设置虚拟机的内存上限。如果 Docker 占用的是大量内存而不是磁盘,就把这个上限调低;参见 如何查看 Mac 内存占用。

OrbStack 和 Colima 呢?

OrbStack 和 Colima 是在 Mac 上运行 Docker 容器的替代方案。它们把数据存放在各自的位置,而不是 Docker Desktop 的 Docker.raw 里,但同样的 docker system df 和 prune 命令对你的 docker CLI 当前指向的任何引擎都有效。用 docker context ls 查看当前指向的是哪个,磁盘设置请参考各工具自己的文档。

WTMemory 能清理 Docker 数据吗?

不能,这是有意为之。WTMemory 的清理范围包括受支持的 AI 模型文件夹和开发缓存,比如 Xcode DerivedData 以及 npm、pnpm、Yarn、Bun、Cargo 和 Gradle 缓存。Docker 虚拟机数据被排除在外,因为其中可能有数据库和无法重建的工作成果,而且只有 Docker 自己知道哪些部分可以安全删除。

它能免费做的事:

WTMemory 是一款原生菜单栏 App,支持 macOS 12 及以上版本,兼容 Apple 芯片和 Intel 机型。查看功能免费;Pro 一次性 $9 USD,最多 3 台 Mac,提供 7 天试用。

下载 WTMemory

常见问题

Mac 上 Docker 的数据存放在哪里?

Docker Desktop 把 Linux 镜像、容器、数据卷和构建缓存都放在一个磁盘映像文件里,默认路径是 ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw。确切位置可以在 Settings > Resources > Advanced 中查看。

删除 Docker.raw 安全吗?

不要在 Docker 运行时从访达里删除它。删除或重置它会清除所有镜像、容器和数据卷,包括数据卷里的数据库数据。请改用 prune 命令,或 Docker Desktop 自带的故障排除和重置选项。

docker system prune 会删除数据卷吗?

默认不会。docker system prune 会删除已停止的容器、未使用的网络、悬空镜像和未使用的构建缓存。加上 --volumes 还会删除未使用的匿名数据卷。具名数据卷只有通过 docker volume prune -a 或 docker volume rm 才会被删除。

为什么 prune 之后 Docker.raw 还是很大?

Docker.raw 是稀疏文件,访达和一些工具可能显示的是它的最大尺寸,而不是实际占用的空间。用 ls -klsh 查看实际占用。Docker 也提到,在运行中的容器里删除文件时,空间并不总是会自动释放。

WTMemory 能清理 Docker 数据吗?

不能。WTMemory 在设计上就把 Docker 虚拟机数据排除在清理范围之外,因为其中可能有数据库和其他无法重建的数据。它可以在 Running Apps 中显示 Docker 的内存和 CPU 占用,它只读的 Disk Explorer 可以显示文件夹大小。

资料来源,核对于 2026 年 10 月 13 日:Docker Desktop for Mac FAQ、Prune unused Docker objects、Docker Desktop settings。

相关指南

WTMemory 完整使用指南与许可证帮助