179

我刚刚升级到 Windows 10 Home May 2020,激活了 WSL2并安装了Docker Desktop

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

图像位置有些混乱。我相信它在/mnt/wsl/docker-desktop-data/.

如何更改 WSL2 中 docker 镜像的目录?我可以更改 docker 配置以选择内部路径/mnt/d,还是从 /mnt/d 挂载路径到 docker 数据目录?

4

8 回答 8

469

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

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

首先,通过右键单击 Docker 桌面图标并选择退出 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文件将被自动删除(如果您有重要的现有图像/容器,请先备份它):

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 桌面,它应该可以工作了

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

于 2020-09-05T09:10:13.117 回答
16

编辑:重新注册 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

于 2020-07-22T03:55:56.103 回答
11
  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 桌面
于 2021-02-22T17:39:17.653 回答
9

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

我遵循的步骤:

  1. 卸载 Docker。我知道...确保你已经保存了你需要的东西。

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

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

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

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

于 2021-02-23T20:24:31.890 回答
3

一个不错的工具:

DDoSolitary/LxRunOffline:用于管理适用于 Linux (WSL) 的 Windows 子系统的全功能实用程序

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
于 2021-05-25T07:55:21.137 回答
3

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

于 2020-06-20T18:09:27.680 回答
3

对我来说,码头工人不会从路口开始。

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

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

在此处输入图像描述

容器和图像已准备好使用:

在此处输入图像描述

于 2021-05-15T12:35:40.320 回答
0

在 Windows 10 home 中,docker desktop 在 ""C:\Users\xxx\AppData\Local\Docker" 目录下创建 VM,并且此 VM 包含下载的 docker 映像。如果要从 C 更改 VM 位置:到不同的目录,您可以通过使用如下命令在 Windows(安装 docker 桌面之前)上创建一个联结来执行此操作:

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

请注意,在执行命令之前,目标目录结构应该存在,而如果 C:\Users\xxx\AppData\Local\Docker 目录已经存在,则应该删除它,否则命令可能会失败。现在在 Windows 10 主页上安装 docker 桌面,瞧,您可以在“D:\Users\xxx\AppData\Local\Docker”目录中看到内容,即 docker VM 硬盘镜像文件,该文件将包含所有下载的 docker 镜像。

于 2021-01-10T08:31:05.657 回答