Windows 11 Docker Desktop 更换默认C盘存储路径,释放C盘空间
我们知道,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盘空间。
还有一种办法:迁移doker的WSL镜像。
wsl -l --all -v
查看WLS版本
wsl -t docker-desktop
关闭镜像
wsl --export docker-desktop d:\docker-desktop.tar
导出镜像
wsl --unregister docker-desktop
取消安装
wsl --import docker-desktop "f:\docker" "d:\docker-desktop.tar"
重新导入镜像到f:\docker
依次将 docker-desktop和 docker-desktop-data在WSL里的ext4镜像给迁移走就好了。
感谢,有机会我尝试一下。我文章中写的方法似乎有点问题,前阵子我启动几个容器有一些报错,说什么 overlay/xxx 空间不足,然后无法启动容器。
我他妈爱死你了
文明评论哦
我上次临时用了一下,发现太占空间,在一次整理活动中直接卸载了
确实很占用空间,随着时间的积累。现在新买的电脑C盘都直接换2TB固态,否则觉得用不久……
我目前分了100g,其实主要还是很多npm包、conda包占的太多空间,我现在都把缓存放在我其他盘了,情况稍微缓解了一些。
早日更换大固态,早日解脱😁️