前言

前几天写 如何在 Windows 10 家庭版上使用 Docker 时,用的是 VirtualBox + Docker Machine 的方案,无意间发现 boot2docker 已经被弃用了:(

目前,Docker 推荐 Windows 10 家庭版用户启用 WSL 2 并以其为后台安装 Docker Desktop。早之前折腾 WSL 1 未果,现在 WSL 2 都有了,再捡起来吧(摊手)。

安装过程

WSL 2

Windows 10 上使用 WSL 2 有以下要求:

  • 对于 x64 系统: 版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
  • 对于 ARM64 系统: 版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
  • 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。

Windows 图标 + R 启动 cmd ,键入命令 winver 检查 Windows 版本及内部版本号。

如果运行的是 Windows 10 版本1903 或 1909,请在 Windows 菜单中打开“设置”,导航到“更新和安全性”,然后选择“检查更新”。 内部版本号必须是 18362.1049+ 或 18363.1049+,次要内部版本号需要高于 .1049。

启用可选功能

需要开启两个可选功能,然后 重启

1. Windows Subsystem for Linux

管理员身份 打开 PowerShell 运行以下语句,启用“适用于 Linux 的 Windows 子系统”可选功能。

1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2. Virtual Machine Platform

继续运行以下语句,启用“虚拟机平台”可选功能。

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启

安装 Linux 内核更新

下载并安装 适用于 x64 计算机的 WSL2 Linux 内核更新包 ,建议迅雷下载。

将 WSL 2 设置为默认版本

默认使用之前的 WSL 1,所以得手动设置使用 WSL 2 ,在 PowerShell 中运行以下语句将 WSL 2 设置为默认。

  • 无需管理员身份启动 PowerShell
1
wsl --set-default-version 2

适用于 Linux 的 Windows 子系统发行版包

一共有三种安装方式,第三种尝试失败暂未解决。

1. 使用命令行安装

以管理员身份运行 cmd,指定安装 Ubuntu。安装完毕后可以在开始菜单列表中看到 Ubuntu,实际上与从 Microsoft Store 安装一样。

1
wsl --install -d Ubuntu

2. 从 Microsoft Store 安装

直接在 Microsoft Store 中搜索 Linux 发行(例如,Ubuntu/Kali/Debian)进行安装,默认安装在系统盘。安装完毕后单击运行,然后开始安装 Ubuntu,安装完毕后要求设置用户名和密码(默认为 Linux 管理员账户)。

3. 手动下载安装

为了安装在非系统盘,需要手动下载和安装。下载 Ubuntu 20.04 ,这个用迅雷下载迷之慢,我用 Chrome 几分钟就下好了。然后使用 Powershell 执行以下语句进行安装。

  • 无需管理员身份启动 PowerShell
  • 注意需要将文件放到安装的目标文件夹
1
Add-AppxPackage .\Ubuntu_2004.2020.424.0_x64.appx

添加后 Windows 菜单里就出现了 Ubuntu ,打开商店的已安装列表查看。

单击运行,安装 Ubuntu ,遇到以下错误 重启未解决

1
2
3
4
5
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80071772
Error: 0x80071772 ????????????????????

Press any key to continue...

安装 Windows 终端(可选)

打开 Microsoft Store 搜索 Windows Terminal 并安装,这是之前超火(现在也超火)的微软开源项目 microsoft/terminal ,也可以直接下载源码编译。为了省事儿当然直接从商店安装了x

安装终端后,它会将 PowerShell 设置为默认配置文件,打开更多可以看到 Ubuntu 终端的选项。Terminal 的配置文件有许多配置项,暗示可以花样自定义,挖个坑之后填。

Docker Desktop

今年 Docker Desktop 终于支持 Windows 10 家庭版了 👉 Docker Desktop for Windows Home is here! ,安装 WSL 2 步骤比较多,但是 Docker Desktop 直接用安装包安装即可。

Windows 10 Home 上安装 Docker Desktop 有以下要求:

  • Windows 10 版本 1903 或更高版本
  • 安装并启用 WSL 2
  • 下载并安装 Linux 内核更新
  • 硬件要求
    • 具有二级地址转换 (SLAT) 的 64 位处理器
    • 4GB 内存
    • BIOS 级别硬件虚拟化支持

打开任务管理器(CTRL + SHIFT + ESC)的性能选项卡查看是否启用虚拟化

下载 Docker Desktop for Mac and Windows 并安装,其中包括了: Docker Engine, Docker CLI client, Docker Compose, Notary, Kubernetes, Credential Helper 。

安装完毕后要求注销再登录,登陆后 Docker Desktop 会自动弹出,安装完成。

使用 Docker

打开终端(Windows Terminal)就可以使用 dockerdocker-compose 了。

运行以下语句启动一个 MySQL 容器,名称设置为 mysql,默认拉取 mysql:latest

1
docker run -d -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 --name mysql mysql

容器启动后就可以连接 MySQL 服务器了。

1
docker exec -it mysql mysql -u root -p

数据卷

Docker 数据卷在以下位置:

1
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\

加速

在设置中添加国内镜像源

结语

Docker Desktop 真香( • ̀ω•́ )✧