WSL2必须安装在系统盘上,我的系统盘是一个小的SSD。我不想用docker映像来填满它。我该如何更改docker映像路径?我想使用大的Windows文件系统路径。 映像位置有点令人困惑。我认为它在
/mnt/wsl/docker-desktop-data/
中。我怎样才能更改WSL2内部docker映像的目录?我可以更改docker配置以选择
/mnt/d
内部的路径,或者挂载从/mnt/d到docker数据目录的路径吗?/mnt/wsl/docker-desktop-data/
中。/mnt/d
内部的路径,或者挂载从/mnt/d到docker数据目录的路径吗?WSL 2 docker-desktop-data虚拟机磁盘映像通常位于以下位置:%USERPROFILE%\AppData\Local\Docker\wsl\data\ext4.vhdx
按照以下步骤将其迁移到其他驱动器/目录,并保留所有现有的docker数据(已在Docker Desktop 2.3.0.4 (46911)上测试,并在更新到3.1.0 (51484)后继续工作):
首先,通过右键单击Docker Desktop图标并选择退出Docker Desktop来关闭docker desktop。
然后,打开命令提示符:
wsl --list -v
wsl --shutdown
) NAME STATE VERSION
* docker-desktop Stopped 2
docker-desktop-data Stopped 2
wsl --export docker-desktop-data "D:\Docker\wsl\data\docker-desktop-data.tar"
wsl --unregister docker-desktop-data
wsl --import docker-desktop-data "D:\Docker\wsl\data" "D:\Docker\wsl\data\docker-desktop-data.tar" --version 2
D:\Docker\wsl\data\docker-desktop-data.tar
文件(不是ext4.vhdx
文件)。C:\Users\xxx\AppData\Local\Docker
移动到新路径C:\Users\xxx\AppData\Local\Docker
不再存在 mklink /j "C:\Users\xxx\AppData\Local\Docker" "path to where you relocated your docker folder"
.tar
导入方法将虚拟机放到我的硬盘驱动器上要好得多。谢谢! - Aarononthewebwsl --shutdown
命令以移动文件。 - mheinzerling编辑:重新注册docker-desktop现在会将默认的docker-data设置为C驱动器,因此我们只应取消注册docker-data作为接受的答案。
您可以执行以下操作:
wsl --unregister docker-desktop-data
wsl --import docker-desktop-data D:\wsl\docker-desktop-data "C:\Program Files\Docker\Docker\resources\wsl\wsl-data.tar" --version=2
tar文件是用于安装的文件,在这之前需要确认目标位置。
对我来说,当move-wsl
或lxrunoffline
无法在快速环上工作时,它总是有效的。有时你需要先卸载/安装docker。
mklink /j "C:\Users\xxx\AppData\Local\Docker" "D:\Data\Docker\ProgramData_Docker"
mklink /j "C:\ProgramData\Docker" "D:\Data\Docker\AppData_Local_Docker"
您应该能够愉快地拉取Windows Server镜像,但不会占用您的引导驱动器。
更新:
尝试创建C:\ProgramData\Docker文件夹的符号链接可能会导致安全错误,具体取决于运行的版本和最初安装的版本。
4.13.0版本的发布说明提到了此功能,这可能是一个可行的解决方法(感谢@bhagerty和@Oly):
start /w “” “Docker Desktop Installer.exe” install --installation-dir=G:\Docker
(来源:ungureanuovidiu @ https://forums.docker.com/t/docker-installation-directory/32773/17)
更新:
这在4.17.1上有效,但ProgramData_Docker更改为DockerDesktop。出现问题需要重置Windows并重新安装Windows 11上的Docker,并且仍然适用于上述更改。请注意,在某个版本之后记住DocherDesktop的更改。
一个不错的工具:
DDoSolitary/LxRunOffline: 一个完整功能的实用程序,用于管理Windows子系统Linux (WSL)
https://github.com/DDoSolitary/LxRunOffline
LxRunOffline.exe move Move a distribution to a new directory.
Options:
-n arg Name of the distribution
-d arg The directory to move the distribution to.
wsl --shutdown
LxRunOffline.exe move -n docker-desktop-data -d D:\vm\dockerdesktop\wsl\data
wsl --shutdown
。wsl -d Ubuntu
。我在github上找到了pxlrbt的这个工具。它使用标准的WSL导入/导出方式,非常安全可靠。我将我的docker-desktop-data发行版移动到另一个驱动器,并且它运行得很好。
Docker desktop WSL distro stopped
。能否分享一下步骤? - otong仅供参考,截至目前(2023年6月):
导入导出方法在Windows上对于大于8 GB的图像失败。这是底层tar实现中的一个错误。
幸运的是,wsl有一个--vhd
开关可用于导入和导出。而且,还有一个wsl --import-in-place
命令,用于处理大容量。
尽管将wsl的.vhdx文件移动到其他位置从wsl的角度看是可以的,但Docker Desktop仍然存在问题。在对"docker-data"进行更改后,例如(较小的)distro\ext4.vhdx文件,Docker Desktop最终会删除此卷,甚至是旧位置(%APPDATA%\Docker\wsl\distro)上的备份副本,并弹出错误窗口。
总的来说,我赞同在Windows上使用mklink
方法,因为:1. 这是最不麻烦的方法,2. 它有效。
wsl --shutdown
。 - Julian Didier