如何在 Mac 上彻底卸载 Docker Desktop,并保留 volume 数据
AskClean 团队 · 更新于 2026-11-02
彻底卸载 Docker Desktop,可能会一并删除那块 Linux 虚拟磁盘——容器、镜像、构建缓存和命名 volume 都存在里面。先盘点并备份所有无法复现的 volume 或镜像,再使用 Docker Desktop 官方的卸载入口。等引擎移除之后,再检查应用残留;绝不要把 Docker.raw 或群组容器里的数据当成普通缓存。

卸载之前:盘点可复现的数据和需要长期保存的数据
Docker Desktop 在一台虚拟机里运行 Linux 容器,这台虚拟机的磁盘映像里可能有镜像、已停止和正在运行的容器、构建缓存以及 volume。项目源码通常放在你自己的绑定挂载(bind mount)文件夹里,不在那块磁盘上;但一个命名 volume 可能保存着本地 PostgreSQL、MySQL、Redis 或应用数据库的唯一副本。
趁 Docker 还能正常运行,先记录一份清单:运行 docker system df -v 查看各类占用,docker ps -a 查看容器,docker volume ls 查看命名 volume,docker image ls 查看镜像,docker context ls 查看 context。Compose 文件、Dockerfile、.dockerignore 和源码仓库属于你的项目,必须保留。
- 运行 docker system df -v,保存各类别的合计大小。
- 运行 docker volume ls,把每个重要的 volume 对应到它所属的项目或数据库。
- 用数据库自带的备份工具导出数据,或者在移除之前按 Docker 的 volume 备份说明操作。
- 保存无法重新构建或重新拉取的本地镜像;记下需要的镜像仓库和标签。
- 记下 docker context ls 的输出;如果以后还需要 context、凭据或配置,就保留 ~/.docker。
volume 显示为“未使用”,只说明当前没有容器引用它,并不能证明里面的数据可以丢弃。
清理空间和彻底卸载是两回事
如果你还要继续用 Docker,就别只因为 Docker.raw 很大而卸载它。用 Docker 自己的盘点和清理命令,从没用的构建缓存和明显过时的镜像开始。即使内部空间已经可以复用,虚拟磁盘也未必会马上变小,所以删除应用并不能可靠地替代存储管理。
适合彻底卸载的情况是:你不再使用 Docker Desktop、要换用其他容器运行环境、安装坏了且无法原地修复,或者有意重置全部 Docker 状态。这个决定会连带那台虚拟机,影响范围远比删除一个应用缓存大。
使用 Docker Desktop 的官方卸载入口
Docker 的官方文档说明,在 macOS 上可以从 Docker Desktop 的 Troubleshoot 菜单卸载。趁应用还能打开,就走这条受支持的路线——它比手动删除 Library 里的随机路径更了解应用本身和它的特权组件。界面打不开时,Docker 还提供了 App 包里的命令行卸载程序;请按当前的官方页面操作,不要照抄论坛上过时的命令。
开始之前,先退出正在调用 Docker 的开发工具,正常停止重要的 Compose 项目,并完成备份。官方卸载程序运行完之后,如果 Docker 的后台组件或网络仍然处于活动状态,就重启 Mac。核对完成之前,不要清倒废纸篓,也不要删除备份。
检查残留文件,别盲删凭据和 volume 数据
官方卸载完成后,可能还留着应用缓存、偏好设置、日志和支持文件。它们的名字通常能看出属于 Docker Desktop,但归属仍然要确认。~/.docker 目录里可能有 CLI 配置、凭据存储的引用、context、插件状态和镜像仓库设置;除非你有意连 Docker CLI 也一并重置,否则请保留或备份它。
群组容器(group container)和 Docker.raw 不是普通的缓存文件夹。Docker.raw 是存放镜像和 volume 的虚拟磁盘;群组容器里的数据可能属于 Docker Desktop 管理的状态。如果官方卸载程序留下了受保护的容器路径,先查看官方文档里给出的原因,并核对备份,再考虑手动移除。遇到权限错误,也不是改用无条件 sudo 删除的理由。
AskClean 遵循同样的边界:启动器缓存可以列为建议清理,~/.docker 作为凭据和配置数据受到保护,Docker.raw 和群组容器数据则标注为由 Docker 自己管理,绝不会被自动清理。
按原来的安装方式移除可选的 CLI 和辅助组件
docker 命令可能来自 Docker Desktop、Homebrew、其他容器运行环境,或者单独安装的软件包。移除之前,先运行 command -v docker,看清它实际指向的路径。如果是 Homebrew 的 formula,就用 Homebrew 卸载;如果是另一个运行环境提供的兼容 CLI,删掉这个命令可能会让你本想保留的替代方案失效。
Compose 插件、凭据助手(credential helper)、kubectl 和 context 也一样,不能只凭文件名判断归属。只移除属于你要淘汰的那种安装方式的组件;项目 YAML、Dockerfile、镜像仓库文档和备份归档始终不在清理范围内。
确认 Docker 已经移除,受保护的数据仍然可用
在“活动监视器”里检查是否还有 Docker 进程,运行 command -v docker,并确认“应用程序”文件夹和“登录项与扩展”里都已经没有 Docker Desktop。检查已知的应用支持路径,把剩下的每一项归类为缓存、配置、凭据、备份或虚拟磁盘数据,再决定是否移除。
删除源 volume 或虚拟磁盘之前,先恢复或检查一份重要的备份,确认 Compose 文件和绑定挂载的项目文件夹都还在。如果 macOS 的储存空间界面没有马上更新,就对照卸载前后实测的 Docker 路径大小,并给“系统数据”一点重新计算的时间。
如果安装情况比较复杂,AskClean 可以扫描与 Docker 相关的应用残留,并说明为什么受保护的路径没有被选中。它应当配合官方的卸载和备份流程使用,而不是取代 Docker 对自己 volume 的了解。
Docker 卸载安全对照表
| 项目 | 检查方法 | 安全的做法 |
|---|---|---|
| Compose 文件与源码 | 项目文件夹 | 保留。它们是你的工作成果,也是重建服务的配方。 |
| 命名 volume | docker volume ls | 先备份。里面可能是数据库的唯一副本。 |
| 镜像与构建缓存 | docker system df -v | 通常可以重新构建或下载;本地构建的镜像可能需要先导出。 |
| Docker 虚拟磁盘 | Docker Desktop Resources / Docker.raw | 受保护。删除它会丢掉 Docker 的本地引擎状态,包括 volume。 |
| CLI 配置与凭据 | ~/.docker | 保留或备份,除非你有意重置 context 和镜像仓库访问。 |
| 启动器缓存 | ~/Library/Caches/com.docker.docker | Docker 停止后,属于可以重建的应用缓存。 |
Docker Desktop 的存放位置和卸载行为会随版本变化。请以 Docker 当前的设置和文档为准,而不是一份旧的路径清单。
常见问题
卸载 Docker Desktop 会删除 volume 吗?
彻底卸载会删除 Docker Desktop 本地虚拟机的状态。请把每一个命名 volume 都视为有风险,卸载前先备份重要的数据库。
可以直接删除 Docker.raw 吗?
只要你还需要 Docker 里的任何东西,就不可以。它是存放镜像、容器、缓存和 volume 的虚拟磁盘。先用 Docker 的盘点和备份工具,再走官方的卸载或重置流程。
要删除 ~/.docker 吗?
不要自动删除。它可能包含 context、CLI 设置、凭据存储的引用、插件和镜像仓库配置。换用其他运行环境时,或者这些设置以后还有用时,请保留它。
为什么 prune 之后 Docker.raw 还是很大?
prune 会让虚拟磁盘内部的空间可以复用,但宿主机上的这个文件不一定马上变小。这并不说明清理失败,也不是在 volume 还有用时删除这块磁盘的理由。
卸载 Docker 会删除我的源码吗?
绑定挂载的项目文件夹在 Docker 的虚拟磁盘之外,应当完好无损。请核实它们的位置和备份,并且不要把项目目录放进应用残留的清理范围。
参考来源