WSL2模式下,将Ubuntu、Docker迁移出C盘并解除Ubuntu、Docker对C盘的空间占用

1 相关背景

windows用户以前如果需要使用linux,一般是远程linux服务器或者使用虚拟机,更有甚者是把系统换成linux。相较于以上方式,对于体验用户或者本机需要使用容器创建服务的用户来说,这是很不方便的。但是近年来,微软也开发了wsl,在windows里集成了linux服务,启用wsl后,从微软的应用商店可以下载使用Ubuntu,同时也可以安装并部署基于wsl2的Docker。

目前,在windows里

(1)适配wsl的Ubuntu是默认安装在C盘的

(2)Docker需要依托wsl安装及运行,且默认位置也在C盘

(3)基于wsl2的Ubuntu 和 docker-desktop 安装时,都没有更改安装位置的选项

这些默认的情况,会使得当我们使用wsl Ubuntu和docker时,总会发现C盘莫名奇妙几个甚至几十个G的容量被占用了。C盘是个寸土寸金的地方,所以轻量级用户或条件受限用户空有wsl这把屠龙宝刀,用在手里却小心翼翼,束手束脚,不得施展。

针对在windows中启用wsl2后,安装使用Ubuntu或docker后,用户使用它们的过程中C盘容量会被显著占用的情况,本篇博客将分享一种将Ubuntu或者docker迁移到其他盘,从而解除它们对C盘的占用,从进一步方便用户大展手脚,尽心体验docker和linux的乐趣。

2 将Ubuntu迁移出C盘并解除Ubuntu对C盘的空间占用

以管理员权限打开powershell,执行以下指令。

(1)查看虚拟机

wsl -l -v

 (2)将在运行的Ubuntu关闭

wsl --shutdown Ubuntu-22.04

(3)迁移Ubuntu。首先选定任意非C盘位置,在本文里创建了 D:\\Ubuntu 文件夹作为Ubuntu的新位置。

(a)导出Ubuntu到某个位置

wsl --export Ubuntu-22.04 D:\\Ubuntu22.04.tar

本指令将备份文件放在了D盘

(b)注销现有的Ubuntu

wsl --unregister Ubuntu-22.04

执行后,C盘里将撤销并释放原Ubuntu所占用的磁盘空间

(c)用a中的备份文件,将Ubuntu导入到wsl,并设置wsl的版本为2

wsl --import Ubuntu-22.04 D:\\Ubuntu D:\\Ubuntu22.04.tar --version 2

这里就是把新导入的Ubuntu的磁盘映像文件的具体位置设置在上文提到的D:\\Ubuntu文件夹里。这个文件目录需要在执行该指令前预先创建。该指令执行完后,运行(1)的指令,会发现又有一个Ubuntu-22.04在运行了。然后就可以把D盘里的tar备份文件删了。

3 将Docker迁移出C盘并解除Docker对C盘的空间占用

在2.1中可以看到windows下的docker,有两个可以迁移的,一个是docker-desktop-data,另一个是docker-desktop。WSL2模式下,它们的VM磁盘映像通常位于C盘的这个隐藏目录下:\Users\<你的主机用户名>\AppData\Local\Docker\wsl

data里是docker-desktop-data的磁盘映像,它是一直快速增长的,所以我们这次就是要迁移它,并且保留所有现有的Docker数据。distro里是docker-desktop的磁盘映像,它很稳定,也比较小,100M左右,我们不做迁移。

(1)右键单击Docker Desktop图标关闭Docker桌面,然后选择退出Docker。

(2)将docker-desktop-data导出到文件中(备份image及相关文件),使用如下命令

wsl --export docker-desktop-data D:\\docker-desktop-data.tar

本指令将备份文件放在了D盘

(3)从wsl 注销 docker-desktop-data,C:\Users\HP\AppData\Local\Docker\wsl\data\ext4.vhdx 这个文件将被自动删除。

wsl --unregister docker-desktop-data

(4)将导出的docker-desktop-data再导入回wsl,并设置我们想要的路径,即新的镜像及各种docker使用的文件的挂载目录,我们这里设置预先创建好的目录 D:\\docker\\wsl 里

wsl --import docker-desktop-data D:\\docker\\wsl D:\\docker-desktop-data.tar --version 2

命令执行完毕,就能再目录下看到文件了,这时再次启动Docker Desktop,就可以正常工作了。

4 效果

对docker和Ubuntu迁移结束后,C盘被释放出15G左右的空间。

下图是刚完成迁移后C盘D盘各自的可用容量:

 下图是迁移后,使用Ubuntu,并用docker下载镜像,运行容器,部署一些大型服务后,C盘D盘的可用容量:

 结果不言而喻,如果没有做迁移,我要是这么部署服务,活儿没干完,C盘先红了...

5 结论

综上,心动不如行动,还想不想大展拳脚,在自己的主机上收获双倍的快乐了?

猜你喜欢

转载自blog.csdn.net/Sbs5218/article/details/130837871