在 Windows 10 Home 上使用 Docker Desktop on WSL2 时如何更改 docker 图像的位置?

How can I change the location of docker images when using Docker Desktop on WSL2 with Windows 10 Home?

我刚刚升级到 Windows 10 Home 2020 年 5 月,activated WSL2, and installed Docker Desktop

我的系统盘肯定是装了WSL2,是个小SSD。我不想用 docker 图片填充它。如何更改 docker 图片路径?我想在我的大 Windows 文件系统中使用一个路径。

image location 有点令人困惑。我相信它在 /mnt/wsl/docker-desktop-data/.

如何在 WSL2 中更改 docker 图片的目录?我可以将 docker 配置更改为 select /mnt/d 内的路径,或者从 /mnt/d 到 docker 数据目录挂载路径吗?

我在 github 上从 pxlrbt 找到了 this tool。它使用标准 wsl import/export 并且非常安全。刚刚将我的 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 在快速响铃上对我不起作用。有时你必须先 unistall/install docker

WSL 2 docker-desktop-data vm 磁盘映像通常位于: %USERPROFILE%\AppData\Local\Docker\wsl\data\ext4.vhdx

按照以下步骤将其重新定位到其他 drive/directory,并保留所有现有 docker 数据(针对 Docker Desktop 2.3.0.4 (46911) 进行测试,并在之后继续工作更新 3.1.0 (51484):

首先,通过右键单击 Docker 桌面图标并 select 退出 Docker 桌面

关闭您的 docker 桌面

然后,打开命令提示符:

wsl --list -v

您应该能够看到,确保两者的状态都已停止。(wsl --shutdown)

  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 文件将自动删除(因此,如果您有重要的现有 image/container,请先备份它):

wsl --unregister docker-desktop-data

将 docker-desktop-data 导入回 wsl,但现在 ext4.vhdx 将位于不同的 drive/directory:

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

再次启动 Docker 桌面,它应该可以工作了

如果在验证

后一切正常,您可以删除 D:\Docker\wsl\data\docker-desktop-data.tar 文件(不是 ext4.vhdx 文件)

在Windows 10 home 中,docker desktop 在""C:\Users\xxx\AppData\Local\Docker" 目录下创建虚拟机,这个虚拟机包含下载的docker 图像. 如果您想将 VM 位置从 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 桌面,瞧,你可以在“D:\Users\xxx\AppData\Local\Docker”目录中看到内容,即 docker VM 硬盘映像文件,它将包含所有下载的 docker 张图片。

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

扩展@Attila Badi 的答案是对 C:\ProgramData\Docker 文件夹也给予同样的处理,该文件夹似乎用于 WSL / Windows 容器。即使移动 Docker 数据文件夹,仍然会给您留下大量的引导驱动器 ProgramData\Docker 文件夹 - 特别是如果您无法或不愿意清理图像。您无法迁移它,也无法在安装后移动它。使用 Docker 引擎高级设置在 Linux 容器模式下有效,但在 windows 下无效,反之亦然,并且启动有问题。

我遵循的步骤:

  1. 卸载Docker。我知道...确保您已经保存了您需要的内容。

  2. 创建主要 space-eating docker 文件夹,在您有很多 space 的位置,例如:

    D:\Data\Docker\ProgramData_Docker& D:\Data\Docker\AppData_Local_Docker

  3. 创建链接文件夹,在管理员模式下通过运行下面的命令window:

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. 安装Docker.

您应该能够愉快地提取 windows 服务器映像,但不会阻塞您的启动驱动器。

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

然后我只使用目录 符号 link:

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

容器和图像可以使用了:

一个不错的工具:

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.

例如:

退出docker桌面,然后:

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

使用小型 SSD 您可能还需要重新定位 WSL 交换文件位置。

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