warning: 这篇文章距离上次修改已过694天,其中的内容可能已经有所变动。
我们知道,Docker Desktop 在win上默认存储的路径是 %LOCALAPPDATA%\Docker,实际存储路径:C:\Users\dk\AppData\Local\Docker,dk 是你的用户名。
我的C盘还是出厂自带的512G固态,虽然我没有分区,将所有空间都给了C盘,但随着 docker 的使用,Windows创建vhdx后缀的磁盘镜像文件不断扩容,这个文件越来越大,当然还有其他大文件。
使用 WinDirStat 软件分析,我的 Docker 目录占用了 107.4GB,这对 512GB 固态来说有点吃力。很遗憾忘了截图,当时的C盘只剩34GB空闲空间,已经爆红了……

所以我打算 migrate Docker Desktop root storage path for windows...
使用 docker image prune -af 或者 docker system prune 这些方法只能释放一部分空间。
还看到使用压缩镜像的方式减小镜像文件体积的方法。
但使用符号软链接的方式是最优雅的,改动最小,实现起来也最简单,还最能释放空间。

看上图,整体思路
- 退出 Docker Desktop
- 创建文件夹
E:\docker_desktop_files - 复制
C:\Users\dk\AppData\Local\Docker下面的所有文件到E:\docker_desktop_files - 使用管理员权限打开一个 cmd 窗口,进入路径
C:\Users\dk\AppData\Local - 重命名
Docker文件夹为Docker_bak,这一举作用有二:让Docker客户端知道C:\Users\dk\AppData\Local\Docker路径已不存在;暂时只是重命名文件夹,相当于一个备份,如果后续迁移出现问题,比如无法打开 Docker Desktop,还能改回来 - 创建符号链接,
mklink /j "C:\Users\dk\AppData\Local\Docker" "E:\docker_desktop_files" - 再次打开 Docker Desktop,正常运行
- 删除
Docker_bak文件夹,释放了 C 盘很多空间。再次检查C:\Users\dk\AppData\Local\,发现生成了一个带有符号链接标志的Docker文件夹

下面给出上面部分命令的解释
# 使用管理员权限打开一个 cmd 窗口,进入路径 `C:\Users\dk\AppData\Local`
cd C:\Users\dk\AppData\Local\
# 重命名 `Docker` 文件夹为 `Docker_bak`,使用 ren 命令重命名
ren Docker Docker_bak
# 创建符号链接,左边路径是 Docker Desktop 程序默认读取的路径,E:\docker_desktop_files 是软链接过去的路径
mklink /j "C:\Users\dk\AppData\Local\Docker" "E:\docker_desktop_files"
再次打开 Docker Desktop,发现程序和里面的镜像、容器等都正常。通过 rmdir /s /q Docker_bak 强制递归删除原本的 Docker 目录,释放了C盘空间。


























