前言
之前,一直在使用 Docker Desktop for Windows 运行 Docker 进行微服架构的开发。Window 10 2004 (20H1)版出来之前,就发现Docker Desktop for Windows有所变化,其一就是安装包的大小,从原来的900多M,变为现在的不到400M;其二新版本的Docker Desktop for Windows一直在建议使用WSL 2进行容器的运行。借着重装系统的机会,折腾了一下,初次研究需要费一些精神。把整个过程整理下来。
软件版本
- Windows 10 20H1/20H2
- Docker Desktop for Windows 3.3.3
注意事项
Windows 10 的 WSL 2 需要依赖于, Microsoft Store中的应用。适用于 Linux 的 Windows 子系统只能在系统驱动器(通常是 C: 驱动器)中运行,所以注意C盘的空间。
一、在 Windows 10 上安装 Hyper-V
Docker Desktop 想要在Windows上运行,需要依赖于Windows的Hyper-V模块。所以首先就要启用Hyper-V。
启用 Hyper-V 以在 Windows 10 上创建虚拟机。可以通过多种方式启用 Hyper-V,包括使用 Windows 10 控制面板、PowerShell 使用部署映像服务和管理工具 (DISM)。
(1) 检查要求
- Windows 10 企业版、专业版或教育版
- 具有二级地址转换 (SLAT) 的 64 位处理器。
- CPU 支持 VM 监视器模式扩展(Intel CPU 上的 VT-c)。
- 最少 4 GB 内存。
请勿在 Windows 10 家庭版上安装 Hyper-V。
(2) 方式一、使用 PowerShell 启用 Hyper-V
- 以管理员身份打开 PowerShell 控制台。
- 运行以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
如果无法找到此命令,请确保你以管理员身份运行 PowerShell。
安装完成后,请重启操作系统。
(3) 方式二、使用 CMD 和 DISM 启用 Hyper-V
部署映像服务和管理工具 (DISM) 可帮助配置 Windows 和 Windows 映像。在众多应用程序中,DISM 可以在操作系统运行时启用 Windows 功能。
使用 DISM 启用 Hyper-V 角色:
- 以管理员身份打开 PowerShell 或 CMD 会话。
- 键入下列命令:
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
(4) 方式三、通过“设置”启用 Hyper-V
- 右键单击 Windows 按钮并选择“应用和功能”。(左下角Windows图标)
- 选择相关设置下右侧的“程序和功能”。
- 选择“打开或关闭 Windows 功能”。
- 选择“Hyper-V”,然后单击“确定”。
安装完成后,系统会提示你重启计算机
二、适用于 Linux 的 Windows 子系统安装
(1) 安装适用于 Linux 的 Windows 子系统
必须先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发版。
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
若要仅安装 WSL 1,现在应重启计算机并继续安装所选的 Linux 分发版,否则请等待重启并继续更新到 WSL 2
(2) 更新到 WSL 2
2.1 若要更新到 WSL 2,必须满足以下条件:
- 运行 Windows 10(已更新到版本 2004 的内部版本 19041 或更高版本)。
- 通过按 Windows 徽标键 + R, 检查你的 Windows 版本,然后键入 winver,选择“确定” 。 (或者在 Windows 命令提示符下输入 ver 命令)。 如果内部版本低于 19041,请更新到最新的 Windows 版本。
2.2 启用“虚拟机平台”可选组件
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动计算机,以完成 WSL 安装并更新到 WSL 2。
2.3 将 WSL 2 设置为默认版本
安装新的 Linux 分发版时,请在 Powershell 中运行以下命令,以将 WSL 2 设置为默认版本:
wsl --set-default-version 2
注意:第一次输入上述命令会出现以下提示:
WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
请根据提示中的`https://aka.ms/wsl2kernel`地址,打开对应的网页,下载`适用于 x64 计算机的 WSL2 Linux 内核更新包`(如下图所示),并进行安装。安装完成后,再次输入`wsl --set-default-version 2`命令即可
(3) 安装所选的 Linux 分发版
打开 Microsoft Store,并选择你偏好的 Linux 分发版
在分发版的页面中,选择“安装”
(4) 设置新分发版
首次启动新安装的 Linux分发版时,将打开一个控制台窗口。(就是之前安装的应用)
系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。未来的所有启动时间应不到一秒。
然后,需要为新的 Linux 分发版创建用户帐户和密码。
(5) 将分发版版本设置为 WSL 1 或 WSL 2
可以打开 PowerShell 命令行并输入以下命令(仅在 Windows 内部版本 19041 或更高版本中可用),来检查分配给每个已安装的 Linux 分发版的 WSL 版本:
wsl -l -v
或
wsl --list --verbose
通过以上命令,就可以查看刚刚已经安装的Linux发行版本,以及当前的WSL版本
若要将分发版设置为受某一 WSL 版本支持,请运行:
wsl --set-version <distribution name> <versionNumber>
请确保将 <distribution name> 替换为你的分发版的实际名称,并将 <versionNumber> 替换为数字“1”或“2”。 可以随时更改回 WSL 1,方法是运行与上面相同的命令,但将“2”替换为“1”。
此外,如果要使 WSL 2 成为你的默认体系结构,可以通过此命令执行该操作:
wsl --set-default-version 2
这会将安装的任何新分发版的版本设置为 WSL 2
Docker Desktop 需要的就是 WSL 2
三、安装Docker Desktop for Windows
- 双击运行 Docker Desktop Installer.exe 安装。(为了避免不可预知的问题,最好用右键“以管理员身份运行”)。跟随安装界面,一路下一步即可。所有的选项都采用默认的方式。安装成功后,点击“Close”关闭窗口。
- 安装成功后,运行 Docker Desktop
- 打开 Docker Desktop Settings,选择General
4. 勾选Use WSL 2 based engine。
如果在已经支持WSL的操作系统上,安装Docker Desktop,那么这个选项是被默认选中的。
如果不选中Use WSL 2 based engine,Resources下面就会回到之前版本的模样。自己制定CPU、内存等信息。但是之前版本指定这些信息会出错。
5. 点击 Apply & Restart。
6. 请确保Linux发行版本是运行在WSL 2 模式下。WSL 在V1 和 V2 两种模式下都可以运行。
检查 WSL 模式,运行下面的命令:
wsl -l -v
如果现有的WSL 是v1,通过下面的命令可以升级为 v2:
wsl --set-version (distro name) 2
想要把 v2 设置为默认模式,可以通过下面的命令:
wsl --set-default-version 2
7. 当 Docker Desktop 重启之后, 进入 Settings > Resources > WSL Integration。
8. 点击 Apply & Restart。
四、查看效果
以上内容完成之后,主要工作就已经完成了。可以安装运行几个容器查看效果。
如果觉得默认的仓库慢,可以在Settings>Docker Engine中的“registry-mirrors”配置你自己的加速器。
验证方法:
1. 首先在Windows PowerSell中,输入:
wsl -l -v
就可以查看到,多了docker desktop的信息。
2. 在Windows CMD中,通过命令随便运行几个容器(我是通过docker-compose, 运行自己的镜像)。在Linux中,就可以查看到已经运行的容器信息。