以下配置适用于 WSL 2,Ubuntu 24.04
安装 Docker for Windows
访问官网,点击 Download Docker Desktop,选择 Windows - AMD64 版本,按照指引进行操作,选择默认设置即可。
也可手动进行安装。具体请参考 Docker 的相关文档配置参数。网址:https://docs.docker.com/desktop/setup/install/windows-install/,查看 Install from the command line
一节。
安装之后可以勾选下图中的所有选项,这样只要启动 docker 桌面,任意 WSL 子系统都能访问全部的 docker 镜像(是不是神奇!)。
修改 WSL 子系统存储位置
WSL 的 Docker 数据默认存储在 WSL 的虚拟磁盘文件中,通常位于系统盘上:
C:\Users\<的用户名>\AppData\Local\Docker\wsl\data
要将其迁移到非系统盘,需要进行以下步骤:
确认当前 WSL 数据存储位置
打开 PowerShell,运行以下命令,列出所有 WSL 实例:
wsl -l -v
其中“*”号前面的是名叫“Ubuntu”的子系统,状态是运行中,WSL 的版本是 WSL 2。“*”代表的是默认 WSL 子系统,也就是命令行键入 wsl
会唤出的系统。
第二个子系统是 Windows 版本的 Docker Desktop 的守护程序,一般不直接使用。
停止 Docker 和 WSL
-
停止 Docker Desktop:
- 在任务栏中右键单击 Docker 图标,选择
Quit Docker Desktop
。
- 在任务栏中右键单击 Docker 图标,选择
-
停止所有 WSL 实例:
wsl --shutdown
备份和移动 WSL 实例
-
导出
docker-desktop-data
使用wsl --export
命令将 Docker 数据导出为一个.tar
文件:wsl --export docker-desktop-data D:\DockerBackup\docker-desktop-data.tar
D:\DockerBackup
是目标路径,可以根据需要更改。 -
卸载原来的 WSL 实例
使用wsl --unregister
卸载docker-desktop-data
实例:wsl --unregister docker-desktop-data # 这个操作很危险,执行之前一定要确保备份完成,否则数据不可恢复!!!
-
导入到新的存储位置
将导出的.tar
文件导入到非系统盘的新路径,例如D:\DockerWSL
:wsl --import docker-desktop-data D:\DockerWSL D:\DockerBackup\docker-desktop-data.tar
这会将
docker-desktop-data
的存储路径更改为D:\DockerWSL
。
配置 Docker 使用新的 WSL 存储位置
-
启动 Docker Desktop。
Docker 会自动检测docker-desktop-data
的新位置,并加载它。 -
验证存储位置:
打开 PowerShell,运行以下命令:wsl -l -v
确认
docker-desktop-data
的新路径是否生效。
更改 WSL 全局存储路径
如果想从根本上改变 WSL 所有实例的默认存储路径,可以修改 WSL 的全局设置。
-
打开文件:
C:\Users\<用户名>\.wslconfig
如果文件不存在,可以手动创建。 -
添加或修改以下配置:
[wsl2] # 指定新的 WSL 实例存储路径 swapFile=D:\\WSL\\swap.vhdx
-
重启 WSL:
wsl --shutdown
验证存储迁移是否成功
-
启动 Docker Desktop。
-
运行以下命令,确认 Docker 的存储路径:
docker info
检查
Docker Root Dir
,它应该指向 WSL 的新存储路径。
注意事项
- 性能问题:
- 如果新存储路径是机械硬盘(HDD),Docker 的性能可能会下降。推荐使用 SSD。
- 路径问题:
WSL 和 Docker 对路径的支持有限,需要确保路径合法。 - 数据问题:
在迁移存储路径前,确保对 Docker 容器和镜像进行备份。
修改镜像存储位置
如图,可以在这里选择镜像存储的位置,把镜像放置在非系统盘,可以极大减少系统负担。
创建 Docker 镜像
可以在 App 中进行创建,也可以在各个子系统进行创建。
可以参考微软的“WSL 上的 Docker 容器入门”:https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers