当我在WSL2上使用Windows 10 Home上的docker Desktop时,如何更改docker映像的位置?

我刚刚升级到Windows 10 Home 2020年5月,激活WSL2,并安装了码头工人的桌面

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

图片的位置有点混乱。我相信它在/mnt/wsl/docker-desktop-data/

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

76626 次浏览

我从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文件是用于安装的文件,在它之前是您的新目标。

这总是工作,而move-wsllxrunoffline对我的快速环不起作用。有时你必须先卸载/安装docker

WSL 2 docker-desktop-data虚拟机磁盘镜像通常位于: %USERPROFILE%\AppData\Local\Docker\wsl\data\ext4.vhdx < / p >

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

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

然后,打开命令提示符:

wsl --list -v

你应该能够看到,确保两者的状态都是Stopped。

  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.vhdx文件),如果在验证后一切正常

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

mklink "C:\Users\xxx\AppData\Local\Docker"“D: \ \ xxx \ AppData \本地用户\ Docker"

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

  1. 停止Docker桌面
  2. 将Docker文件夹从C:\Users\xxx\AppData\Local\Docker迁移到新路径
  3. 确保C:\Users\xxx\AppData\Local\Docker不再存在
  4. 以管理员模式打开cmd
  5. 运行以下命令,将在cmd窗口中创建一个具有适当的from和to路径的符号链接
    mklink /j "C:\Users\xxx\AppData\Local\Docker" "path to where you relocated your docker folder"
  1. 重启Docker Desktop

扩展@Attila Badi的答案将是对C:\ProgramData\Docker文件夹也给予同样的处理,这似乎是用于WSL / Windows容器。即使移动Docker数据文件夹,仍然会给你留下一个巨大比例的启动驱动器ProgramData\Docker文件夹——特别是如果你不能或不愿意清理图像。一旦安装,就不能迁移或移动它。使用Docker引擎高级设置在Linux容器模式下有效,但在windows中无效,反之亦然,并且启动时存在问题。

我遵循的步骤:

  1. < p >卸载码头工人。我知道…确保你已经保存了你需要的东西。

  2. 创建占用空间的docker主文件夹,在一个你有很多空间的位置,例如:

    < p > D:\Data\Docker\ProgramData_Docker, D:\Data\Docker\AppData_Local_Docker < / p >
  3. 创建链接文件夹,以管理员模式在命令窗口中执行如下命令:

mklink /j "C:\Users\xxx\AppData\Local\Docker" "D:\Data\Docker\ProgramData_Docker"
mklink /j "C:\ProgramData\Docker" "D:\Data\Docker\AppData_Local_Docker"
  1. 安装码头工人。

您应该能够愉快地提取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

enter image description here

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

enter image description here

一个很好的工具:

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

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

  1. 关闭wsl。使用命令wsl——shutdown
  2. 将整个C:\Users%USERPROFILE%\AppData\Local\Docker目录移动到不同的驱动器,例如D:\Docker\wsl
  3. 转到注册表编辑器位置计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss。
  4. 找到BasePath设置为C:\Users%USERPROFILE%\AppData\Local\Docker\wsl\data的注册表项。更新这个D:\Docker\wsl\data
  5. 找到另一个BasePath设置为C:\Users%USERPROFILE%\AppData\Local\Docker\wsl\distro的注册表项。更新这个D:\Docker\wsl\发行版。
  6. 使用:wsl -d Ubuntu重新启动wsl