Docker和WSL2安装以及迁移教程

Docker先决条件

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

  1. 在CMD或PowerShell输入:
1
wsl --install
  • 如果这是第一次安装 WSL,这个命令会自动启用 WSL 并安装默认的 Linux 发行版(通常是 Ubuntu)。完成后需要重启电脑。
  1. 确保 WSL2 是默认版本 重启后,再次打开 PowerShell,输入:

    wsl --set-default-version 2

  • 这会将 WSL2 设置为默认版本,而不是 WSL1。
  1. 安装 Linux 发行版
  • 打开 Microsoft Store,搜索你喜欢的 Linux 发行版,比如 Ubuntu、Debian 或 Kali。
  • 点击“获取”并安装。安装完成后,启动它,会让你设置一个用户名和密码。
  1. 检查安装是否成功 在 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 FileName

Distribution 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
  1. Start-Process
    • PowerShell 中用于启动进程的命令,相当于 CMD 的 start。
  2. -FilePath “Docker Desktop Installer.exe”
    • 指定要运行的可执行文件,和 CMD 中的直接调用一致。
  3. -ArgumentList “install –installation-dir=E:\develop\Docker”
    • 将参数传递给安装程序,等价于 CMD 中的 install –installation-dir=E:\develop\Docker。
  4. -Wait
    • 对应 CMD 的 /w,表示等待安装程序完成后再继续执行后续命令。
  5. -NoNewWindow
    • 避免在新窗口中运行,保持与 CMD 的行为一致(CMD 默认就在当前窗口运行)。

借助 Docker Desktop for Windows 中支持的 WSL 2 后端,可以在基于 Linux 的开发环境中工作并生成基于 Linux 的容器,并在 Windows 上的 Microsoft Edge 浏览器中运行容器。

若要安装 Docker(在已安装 WSL 之后):

  1. 按照通常的安装说明安装Docker Desktop。如果您正在运行受支持的系统,Docker Desktop会在安装期间提示您启用WSL 2(也有可能不提示,安装完成可以自己勾选)。读取屏幕上显示的信息,并启用WSL 2继续。
  2. 从Windows“开始”菜单启动Docker Desktop。
  3. 从Docker菜单中,选择Settings > General
  4. 选中Use the WSL 2 based engine复选框(如果在支持WSL 2的系统上安装了Docker Desktop,则默认情况下将启用此选项)。
  5. 单击Apply & Restart
  6. Docker Desktop重新启动后,进入Settings > Resources > WSL Integration
    Docker WSL集成将在默认WSL发行版上启用。
  7. 单击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
2
wsl --export docker-desktop D:\docker-desktop\docker-desktop.tar
wsl --export docker-desktop-data D:\docker-desktop\docker-desktop-data.tar

注销子系统

1
2
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

使用新路径导入子系统

1
2
wsl --import docker-desktop D:\docker-desktop\distro D:\docker-desktop\docker-desktop.tar --version 2
wsl --import docker-desktop-data D:\docker-desktop\data D:\docker-desktop\docker-desktop-data.tar --version 2