1 下载并安装运行 Docker Desktop
1.1 下载 Docker Desktop
点击链接下载 Docker Desktop:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
下载后得到:
1.2 通过命令行安装 Docker Desktop
在 Docker Desktop Installer.exe 所在的目录下运行 Windows 命令提示符
在命令行中输入以下命令来进行 Docker Desktop 的安装:
start /w "" "Docker Desktop Installer.exe" install --installation-dir=E:\develop\Docker
1
注:Docker Desktop 默认安装位置为:C:\Program Files\Docker\Docker
这里通过在 install 命令后添加 --installation-dir=<path> 参数来修改 Docker Desktop 的默认安装位置,其中 <path> 为指定的安装路径,这里我指定的安装位置为:E:\develop\Docker。
添加桌面快捷方式:
等待安装:
点击 Close and restart 后,电脑会进行重启
1.3 运行 Docker Desktop
重启完成后,点击桌面快捷方式:
点击 Accept
弹出以下界面说明系统上还未安装 WSL :
3 安装 WSL2
3.1 开启 适用于 Linux 的 Windows 子系统 和 虚拟机平台功能
打开设置,点击应用,然后再点击可选功能
在可选功能中点击更多 Windows 功能
查看是否已经勾选开启了 适用于 Linux 的 Windows 子系统 和 虚拟机平台 (我安装 Docker Desktop 重启后,这两个选项已经被勾选上了,如果发现没有勾选上,那么需要先勾选上重启电脑后再进行 WSL 的安装)
3.2 下载 Linux 内核更新包
点击链接下载 Linux 内核更新包:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下载后得到:
双击运行点击 Next 后等待安装:
点击 Finish 完成安装:
3.3 将 WSL 2 设置为默认版本
打开 PowerShell,运行以下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
3.4 安装 Ubuntu 22.04.1 LTS
打开 Microsoft Store
搜索 Ubuntu 后,找到 Ubuntu 22.04.1 LTS,然后点击获取按钮来进行安装
3.5 设置 Linux 用户名和密码
安装完成 Ubuntu 22.04.1 LTS 后,点击打开按钮:
在控制台窗口中设置用户名和密码
注:
1、输入密码时,屏幕上不会显示任何内容。 你不会看到你正在键入的内容,这是正常的。
2、创建用户名和密码后,该帐户将是分发版的默认用户,并将在启动时自动登录。
3、此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。
4 迁移 WSL2 安装位置
WSL2 默认安装在 C 盘,我们可以通过以下步骤迁移安装位置
通过以下命令列出已安装的 Linux 发行版:
wsl -l -v
可以看到已安装了 Ubuntu,其运行状态为:Stopped
如果运行状态为 Running,需先通过以下命令关闭:
wsl --shutdown
然后我们通过以下命令将 Ubuntu 导出为 tar 文件:
wsl --export Ubuntu D:\develop\Ubuntu\Ubuntu.tar
注:
wsl --export <Distribution Name> <FileName>
<Distribution Name> 为目标 Linux 发行版的名称,我安装的为: Ubuntu
<FileName> 为导出的文件名,这里我导出到 D:\develop\Ubuntu\Ubuntu.tar
导出成功后,可以在导出的路径下看到导出的 tar 文件:
然后注销并卸载 Ubuntu
wsl --unregister Ubuntu
再次查看已安装的 Linux 发行版:
wsl -l -v
可以看到 Ubuntu 已经注销并卸载了
然后将 Ubuntu 导入到新位置:
wsl --import Ubuntu D:\develop\Ubuntu\wsl D:\develop\Ubuntu\Ubuntu.tar
注:wsl --import <Distribution Name> <InstallLocation> <FileName>
<Distribution Name> 为目标 Linux 发行版的名称,我安装的为: Ubuntu
<InstallLocation> 为要安装到的新位置,这里我安装到:D:\develop\Ubuntu\wsl
<FileName> 为要导入的文件名,这里导入刚才导出的 D:\develop\Ubuntu\Ubuntu.tar
导入完成后,再次查看已安装的 Linux 发行版:
wsl -l -v
可以看到 Ubuntu 已成功导入到新的位置
最后需要更改一下默认用户:
Ubuntu config --default-user xxh
注:<DistributionName> config --default-user <Username>
<Distribution Name> 为目标 Linux 发行版的名称,我安装的为: Ubuntu,命令里要写为:Ubuntu
<Username> 为 WSL 发行版中存在的用户名,在设置 Linux 用户名和密码时我创建的用户为:xxh,所以命令里的 <Username> 这里就为:xxh
以上步骤完成后,看到指定安装的新位置下有 .vhdx 文件:
说明迁移成功
5 配置 Docker Desktop
WSL2 安装完成后,进入 Docker Desktop:
可以看到已经能够使用 Docker Desktop 了
我们先进行一些设置
点击右上角的齿轮图标进入设置,完成以下操作:
还需配置一下阿里云镜像加速,可参考:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 进行配置
Docker Desktop 中原先的配置:
配置了阿里云镜像加速后Docker Desktop 中的配置:
这里的地址参照上面给出参考文档换成自己的即可
6 迁移 docker-desktop-data 和 docker-desktop 安装位置
Docker Desktop 会创建两个发行版:docker-desktop-data 和 docker-desktop,它们的默认位置在 C:\Users\<你电脑的用户名>\AppData\Local\Docker\wsl,我们同样可以参考上面导入导出 Ubuntu-22.04 的过程将docker-desktop-data 和 docker-desktop 迁移到其他位置
wsl --export docker-desktop-data D:\develop\Docker\docker-desktop-data.tar
wsl --export docker-desktop D:\develop\Docker\docker-desktop.tar
wsl --unregister docker-desktop-data
wsl --unregister docker-desktop
wsl --import docker-desktop-data D:\develop\Docker\wsl\docker-desktop-data D:\develop\Docker\docker-desktop-data.tar
wsl --import docker-desktop D:\develop\Docker\wsl\docker-desktop D:\develop\Docker\docker-desktop.tar
以上步骤完成后,看到指定安装的新位置下有以下 .vhdx 文件:
说明迁移成功
7 拉取 Nginx 镜像并测试运行
打开 Docker Desktop 后,在 Windows 终端(Windows Terminal)中进入 Ubuntu-22.04 :
拉取 Nginx 镜像
docker pull nginx
运行 Nginx
docker run -p 80:80 -d nginx
访问 http://localhost ,能够看到以下页面说明 Nginx 运行成功
可以看到 Docker Desktop 中也有了对应的容器
8 参考文档
https://docs.docker.com/desktop/install/windows-install/
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package
https://learn.microsoft.com/zh-cn/windows/wsl/setup/environment#set-up-your-linux-username-and-password
https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands
https://blog.csdn.net/cn_ljr/article/details/132047516