我刚刚升级到Windows 10 Home 2020年5月,激活了WSL2,并安装了Docker Desktop。

WSL2必须安装在我的系统盘上,这是一个小的SSD。我不想用docker图像填充它。如何更改docker映像路径?我想在我的大Windows文件系统中使用一个路径。

图像位置有些混乱。我认为它在/mnt/wsl/docker-desktop-data/。

如何在WSL2中更改docker映像的目录?我是否可以更改docker配置以选择/mnt/d内的路径,或从/mnt/d挂载docker数据dirs上的路径?


我从github上的pxlrbt找到了这个工具。它使用标准的wsl导入/导出,非常安全。刚刚把我的docker-desktop-data发行版都移动到另一个驱动器,它工作得很好。


编辑:重新注册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文件是用于安装的文件,在它之前是您的新目标。

这总是工作,而移动-wsl或lxrunoffline不为我工作在快速环。有时你必须先卸载/安装docker


WSL 2 docker-desktop-data虚拟机磁盘镜像通常位于: 当地% USERPROFILE % \ AppData \ \码头工人\ wsl \ \ ext4.vhdx数据

按照以下步骤将其重新定位到其他驱动器/目录,并保留所有现有的docker数据(在docker Desktop 2.3.0.4(46911)上进行测试,并在更新3.1.0(51484)后继续工作):

首先,关闭你的docker桌面右键单击docker桌面图标,并选择退出docker桌面

然后,打开命令提示符:

wsl --list -v

你应该能够看到,确保这两个状态都是停止的。(wsl——关闭)

  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2

导出docker-desktop-data到文件中

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

从wsl中注销docker-desktop-data,注意,在此之后,您的ext4。VHDX文件将自动删除(所以如果你有重要的现有图像/容器,请先备份它):

wsl --unregister docker-desktop-data

将docker-desktop-data导入回wsl,但现在是ext4。VHDX将驻留在不同的驱动器/目录:

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

再次启动Docker Desktop,它应该可以工作

你可以删除D:\Docker\wsl\data\ Docker -desktop-data.tar文件(而不是ext4. txt文件)。VHDX文件),如果一切看起来对你验证后


在Windows 10 home中,docker desktop在“C:\Users\xxx\AppData\Local\ docker”目录下创建了虚拟机,该虚拟机包含下载的docker映像。如果你想改变虚拟机的位置从C:到一个不同的目录,你可以通过在windows上创建一个连接(在安装docker桌面之前),使用如下命令:

mklink /j “C:\Users\xxx\AppData\Local\Docker” “D:\Users\xxx\AppData\Local\Docker”

注意,在执行命令之前,目标目录结构应该存在,而如果C:\Users\xxx\AppData\Local\Docker目录已经存在,则应该删除该目录,否则命令可能会失败。现在在windows 10 home上安装docker desktop,瞧,你可以在“D:\Users\xxx\AppData\Local\ docker”目录中看到一些东西,即docker虚拟机硬盘镜像文件,该文件将包含所有下载的docker镜像。


停止Docker桌面 将Docker文件夹从C:\Users\xxx\AppData\Local\Docker迁移到新路径 确保C:\Users\xxx\AppData\Local\Docker不在那里 以管理员模式打开cmd 运行以下命令,将在cmd窗口中创建一个具有适当的from和to路径的符号链接

    mklink /j "C:\Users\xxx\AppData\Local\Docker" "path to where you relocated your docker folder"

重启Docker Desktop


Extending @Attila Badi 's answer would be to also give the same treatment to the C:\ProgramData\Docker folder, which seems to be used for WSL / Windows Containers. Even moving the Docker data folders, would still leave you with a boot drive ProgramData\Docker folder of massive proportions - especially if you are unable or unwilling to clean the images. You cannot migrate it, or move it once installed. Using the Docker engine advanced settings works in Linux container mode, but not in windows and vice versa and has trouble starting.

我遵循的步骤:

卸载码头工人。我知道…确保你已经保存了你需要的东西。 创建主要占用空间的docker文件夹,在一个你有很多空间的位置,例如: D: \ \码头工人\ ProgramData_Docker &数据 D: \ \码头工人\ AppData_Local_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服务器映像,但不会阻塞您的引导驱动器。

更新:

尝试符号链接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 )


对我来说,docker不会从junction开始。

然后我只使用目录符号链接:

Docker stopped

Folder "wsl" moved to other location on disk "B"

RUben@AD-RUBEN C:\Users\RUben\AppData\Local\Docker
$ mklink /D wsl "B:\dev\wsl"
**symbolic link** created for wsl <<===>> B:\dev\wsl

容器和映像已准备就绪,可以使用:


一个很好的工具:

ddolone /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.

例如:

退出docker桌面,然后:

wsl --shutdown
LxRunOffline.exe move -n docker-desktop-data -d D:\vm\dockerdesktop\wsl\data

使用小SSD也可以重新定位WSL交换文件的位置。

https://learn.microsoft.com/en-us/windows/wsl/wsl-config


最好的选择是更新注册表。遵循以下步骤

Shutdown the wsl. Use the command wsl --shutdown. Move the entire C:\Users\%USERPROFILE%\AppData\Local\Docker directory to different drive for example D:\Docker. Goto Registry editor location Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss. Find the registry entry with the BasePath set to C:\Users\%USERPROFILE%\AppData\Local\Docker\wsl\data. Update this D:\Docker\wsl\data. Find another registry entry with the BasePath set to C:\Users\%USERPROFILE%\AppData\Local\Docker\wsl\distro. Update this D:\Docker\wsl\distro. Restart wsl using: wsl -d Ubuntu.