AskClean问净

如何在 Mac 上彻底卸载 Docker Desktop,并保留 volume 数据

AskClean 团队 · 更新于 2026-11-02

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

概念示意图:Docker 的存储被画成一排可以移除的容器,另有一个受保护的持久数据保险库
卸载时最关键的决定不在应用本身,而在于 Docker 的 volume 和虚拟磁盘里,是否存着唯一的一份数据。

卸载之前:盘点可复现的数据和需要长期保存的数据

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 和源码仓库属于你的项目,必须保留。

  1. 运行 docker system df -v,保存各类别的合计大小。
  2. 运行 docker volume ls,把每个重要的 volume 对应到它所属的项目或数据库。
  3. 用数据库自带的备份工具导出数据,或者在移除之前按 Docker 的 volume 备份说明操作。
  4. 保存无法重新构建或重新拉取的本地镜像;记下需要的镜像仓库和标签。
  5. 记下 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 文件与源码项目文件夹保留。它们是你的工作成果,也是重建服务的配方。
命名 volumedocker volume ls先备份。里面可能是数据库的唯一副本。
镜像与构建缓存docker system df -v通常可以重新构建或下载;本地构建的镜像可能需要先导出。
Docker 虚拟磁盘Docker Desktop Resources / Docker.raw受保护。删除它会丢掉 Docker 的本地引擎状态,包括 volume。
CLI 配置与凭据~/.docker保留或备份,除非你有意重置 context 和镜像仓库访问。
启动器缓存~/Library/Caches/com.docker.dockerDocker 停止后,属于可以重建的应用缓存。

Docker Desktop 的存放位置和卸载行为会随版本变化。请以 Docker 当前的设置和文档为准,而不是一份旧的路径清单。

常见问题

卸载 Docker Desktop 会删除 volume 吗?

彻底卸载会删除 Docker Desktop 本地虚拟机的状态。请把每一个命名 volume 都视为有风险,卸载前先备份重要的数据库。

可以直接删除 Docker.raw 吗?

只要你还需要 Docker 里的任何东西,就不可以。它是存放镜像、容器、缓存和 volume 的虚拟磁盘。先用 Docker 的盘点和备份工具,再走官方的卸载或重置流程。

要删除 ~/.docker 吗?

不要自动删除。它可能包含 context、CLI 设置、凭据存储的引用、插件和镜像仓库配置。换用其他运行环境时,或者这些设置以后还有用时,请保留它。

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

prune 会让虚拟磁盘内部的空间可以复用,但宿主机上的这个文件不一定马上变小。这并不说明清理失败,也不是在 volume 还有用时删除这块磁盘的理由。

卸载 Docker 会删除我的源码吗?

绑定挂载的项目文件夹在 Docker 的虚拟磁盘之外,应当完好无损。请核实它们的位置和备份,并且不要把项目目录放进应用残留的清理范围。

参考来源

相关的彻底卸载任务