Docker和WSL2安装以及迁移教程
Docker和WSL2安装以及迁移教程
FTDRTDDocker先决条件
- 确保计算机运行的是 Windows 10(已更新到版本 2004 的内部版本 18362 或更高版本)或Windows 11。
- 安装 WSL,并为在 WSL 2 中运行的 Linux 发行版设置用户名和密码。
- 为了避免与在Docker Desktop上使用WSL 2发生任何潜在冲突,在安装Docker Desktop之前,必须卸载直接通过Linux发行版安装的任何早期版本的Docker Engine和CLI。
WSL2安装注意事项
如果 wsl –install 命令不起作用,可能是“虚拟机平台”没启用。去“控制面板 > 程序 > 启用或关闭 Windows 功能”,勾选“虚拟机平台”和“Windows 子系统支持 Linux”,然后重启。
硬件需要支持虚拟化(可以在 BIOS 中开启,比如 Intel VT-x 或 AMD-V)。
可使用以下命令一键开启所需功能,然后手动重新启动
1
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux, VirtualMachinePlatform -NoRestart
Microsoft-Windows-Subsystem-Linux:启用 WSL。
VirtualMachinePlatform:启用 WSL2 所需的虚拟化支持。
-NoRestart:避免立即重启(不过建议完成后手动重启)。
安装WSL2
- 在CMD或PowerShell输入:
1 | wsl --install |
- 如果这是第一次安装 WSL,这个命令会自动启用 WSL 并安装默认的 Linux 发行版(通常是 Ubuntu)。完成后需要重启电脑。
确保 WSL2 是默认版本 重启后,再次打开 PowerShell,输入:
wsl --set-default-version 2
- 这会将 WSL2 设置为默认版本,而不是 WSL1。
- 安装 Linux 发行版
- 打开 Microsoft Store,搜索你喜欢的 Linux 发行版,比如 Ubuntu、Debian 或 Kali。
- 点击“获取”并安装。安装完成后,启动它,会让你设置一个用户名和密码。
- 检查安装是否成功 在 PowerShell 或命令行输入:
1
wsl -l -v
这会列出你安装的发行版和它们的版本。如果显示 “2”,说明 WSL2 运行正常。
5.更新 WSL 如果需要更新 WSL,输入:
1
wsl --update
安装WSL2成功之后,如何将WSL2迁移到任意盘符
WSL2 默认安装在 C 盘,我们可以通过以下步骤迁移安装位置
通过以下命令列出已安装的 Linux 发行版:
1 | wsl -l -v |
如果运行状态为 Running,需先通过以下命令关闭:
1 | wsl --shutdown |
然后我们通过以下命令将 Ubuntu导出为 tar 文件:
1 | wsl --export Ubuntu e:\Ubuntu.tar |
注意:
wsl –export Distribution Name FileName
Distribution 为目标 Linux 发行版的名称,我安装的为:Ubuntu
FileName 为导出的文件名,这里我导出到
e:\Ubuntu.tar
导出成功后,可以在导出的路径下看到导出的 tar 文件:
然后注销并卸载 Ubuntu
1 | wsl --unregister Ubuntu |
再次查看已安装的 Linux 发行版:
1 | wsl -l -v |
可以看到 Ubuntu已经注销并卸载了
然后将Ubuntu导入到新位置:
1 | wsl --import Ubuntu E:\ubuntu E:\Ubuntu.tar |
注意:
wsl –import Distribution Name InstallLocation FileNameDistribution Name 为目标 Linux 发行版的名称,我安装的为:
Ubuntu-22.04
InstallLocation 为要安装到的新位置,这里我安装到:
E:\ubuntu2204
FileName 为要导入的文件名,这里导入刚才导出的
e:\Ubuntu-22.04.tar
导入完成后,再次查看已安装的 Linux 发行版:
1 | wsl -l -v |
可以看到 Ubuntu已成功导入到新的位置
最后需要更改一下默认用户:
1 | Ubuntu config --default-user lin |
注:DistributionName config –default-user Username
Distribution Name 为目标 Linux 发行版的名称,我安装的为:
Ubuntu-22.04
,命令里要写为:Ubuntu2204
Username 为 WSL 发行版中存在的用户名,在设置 Linux 用户名和密码时我创建的用户为:
lin
,所以命令里的 Username 这里就为:lin
以上步骤完成后,看到指定安装的新位置下有 .vhdx
文件说明迁移成功
通过命令行安装 Docker Desktop
在 Docker Desktop Installer.exe
所在的目录下运行 Windows 命令提示符
在命令行中输入以下命令来进行 Docker Desktop 的安装:
1 | start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker |
注:Docker Desktop 默认安装位置为:
C:\Program Files\Docker\Docker
这里通过在 install 命令后添加--installation-dir=<path>
参数来修改 Docker Desktop 的默认安装位置,其中<path>
为指定的安装路径,这里我指定的安装位置为:D:\Docker
。
或PowerShell
1 | Start-Process -FilePath "Docker Desktop Installer.exe" -ArgumentList "install --installation-dir=D:\Docker" -Wait -NoNewWindow |
- Start-Process
- PowerShell 中用于启动进程的命令,相当于 CMD 的 start。
- -FilePath “Docker Desktop Installer.exe”
- 指定要运行的可执行文件,和 CMD 中的直接调用一致。
- -ArgumentList “install –installation-dir=E:\develop\Docker”
- 将参数传递给安装程序,等价于 CMD 中的 install –installation-dir=E:\develop\Docker。
- -Wait
- 对应 CMD 的 /w,表示等待安装程序完成后再继续执行后续命令。
- -NoNewWindow
- 避免在新窗口中运行,保持与 CMD 的行为一致(CMD 默认就在当前窗口运行)。
借助 Docker Desktop for Windows 中支持的 WSL 2 后端,可以在基于 Linux 的开发环境中工作并生成基于 Linux 的容器,并在 Windows 上的 Microsoft Edge 浏览器中运行容器。
若要安装 Docker(在已安装 WSL 之后):
- 按照通常的安装说明安装Docker Desktop。如果您正在运行受支持的系统,Docker Desktop会在安装期间提示您启用WSL 2(也有可能不提示,安装完成可以自己勾选)。读取屏幕上显示的信息,并启用WSL 2继续。
- 从Windows“开始”菜单启动Docker Desktop。
- 从Docker菜单中,选择Settings > General。
- 选中Use the WSL 2 based engine复选框(如果在支持WSL 2的系统上安装了Docker Desktop,则默认情况下将启用此选项)。
- 单击Apply & Restart。
- Docker Desktop重新启动后,进入Settings > Resources > WSL Integration。
Docker WSL集成将在默认WSL发行版上启用。 - 单击Apply & Restart。
Docker 换源
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,这里以阿里云镜像为例,获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,进入后登录,左侧菜单选中镜像加速器就可以看到你的专属地址了:
然后复制到docker的设置中。
单击Apply & Restart。
在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。
Docker Desktop(WSL2)修改镜像存储位置
Docker Desktop WSL2 默认会安装2个子系统,使用命令 wsl -l -v --all<span> </span>
查看。
docker-desktop是存放程序的,docker-desktop-data是存放镜像的,这两个wsl子系统都是默认放在系统盘的。
如何转移?
退出Docker Desktop
关闭WSL
1 | wsl --shutdown |
将子系统导出为tar文件
1 | wsl -- docker-desktop D:\docker-desktop\docker-desktop.tar |
注销子系统
1 | wsl --unregister docker-desktop |
使用新路径导入子系统
1 | wsl --import docker-desktop D:\docker-desktop\distro D:\docker-desktop\docker-desktop.tar --version 2 |