Docker 初学者需要了解的几个知识点 (四):WSL 和 Hyper-V 是什么?_wsl hyperv
在前三篇文章里,我们聊了容器、Docker、镜像和引擎这些核心概念。在一些文档中,我们会看到在安装 Docker Desktop 前,不同文档提到的 “需要开启的功能” 不一样:有的说要开 WSL 和虚拟机平台,有的加了 Hyper-V,还有的提到要开 “容器” 功能,下面我们就来说说原因。今天来聊聊两个容易让初学者犯迷糊的 “技术名词”——WSL 和 Hyper-V。它们听起来很复杂,但其实就像 Docker 运行时的 “辅助工具”,了解它们能帮你更好地理解 Docker 在 Windows 上的工作原理。
一、先搞懂一个前提:Docker 为啥需要 “辅助工具”?
我们日常用的 Docker 容器,大多数是 “Linux 容器”—— 就像只能在安卓手机上运行的 App,有自己固定的运行环境要求。
但如果你的电脑装的是 Windows 系统,直接让 Linux 容器跑起来就会出问题 —— 这就好比用苹果手机直接装安卓 App,系统不兼容。这时候就需要一个 “中间工具” 来搭座桥,让 Windows 能 “认得出” Linux 容器,WSL 和 Hyper-V 就是干这个的。
二、WSL 2:Windows 里的 “Linux 小窗口”
WSL 的全称是 “适用于 Linux 的 Windows 子系统”,简单说就是:让你在 Windows 系统里直接跑 Linux 环境的工具。
1. 为什么需要 WSL 2?
想象一下,你在 Windows 电脑上用 Docker 跑一个 Linux 容器(比如 Ubuntu 容器),如果没有 WSL 2,Docker 就得启动一个完整的 Linux 虚拟机(相当于在电脑里再装一个独立的 Linux 系统),既占内存又启动慢。
而 WSL 2 相当于在 Windows 里开了个 “Linux 小窗口”—— 它不用单独装完整系统,而是和 Windows 共享硬件资源,启动速度快、占用资源少。Docker 在 Windows 上默认就会用 WSL 2 来运行 Linux 容器,这样效率更高。
2. 怎么理解 WSL 2 和 Docker 的关系?
可以把 WSL 2 看作是 Docker 的 “舒适小窝”:
- Docker 的 Linux 容器住在这里面,能直接用上 Linux 环境(满足运行需求);
- 同时又能方便地和 Windows 系统 “串门”(比如访问 Windows 里的文件),不用来回切换系统。
三、Hyper-V:Windows 自带的 “虚拟机大管家”
Hyper-V 是 Windows 系统自带的虚拟化技术,简单说就是:能在 Windows 里创建和管理多个虚拟机的工具。
1. 为什么需要 Hyper-V?
如果你的电脑不支持 WSL 2(比如 Windows 10 低于 1903 版本,像 1809 及更早的版本,对于 ARM64 系统,低于 2004 版本 ),Docker 就会用 Hyper-V 来运行 Linux 容器。它会创建一个完整的 Linux 虚拟机(相当于在电脑里单独装了个 Linux 系统),让容器在里面运行。
打个比方:WSL 2 是 “在现有房子里隔出一个小房间”(轻量、共享空间),而 Hyper-V 是 “在院子里另盖一座小房子”(完整、独立)。虽然都能让 Linux 容器运行,但 “隔出小房间” 更省空间。
2. Hyper-V 和 WSL 2 的区别?
特点
WSL 2
Hyper-V
本质
轻量的 Linux 子系统
完整的虚拟化平台
启动速度
快(几秒内)
慢(需要启动完整虚拟机)
资源占用
少
多
适用场景
日常开发、运行 Linux 容器
需要完整虚拟机环境时
现在 Docker Desktop 已经优先推荐用 WSL 2,所以除非你的电脑不支持,否则不用特意关注 Hyper-V。
四、不同文档对 “开启功能” 要求不同的原因
其实核心原因是场景不同:
- 只运行 Linux 容器(主流场景):只要开启 “适用于 Linux 的 Windows 子系统” 和 “虚拟机平台”,依靠 WSL 2 就能正常运行,Hyper-V 和 “容器” 功能都不是必需的;
- 电脑不支持 WSL 2(旧系统):比如 Windows 10 早期低于 1903 版本(对于 x64 系统),对于 ARM64 系统低于 2004 版本,这时候 Docker 只能用 Hyper-V 来运行 Linux 容器,所以必须开启 Hyper-V;
- 需要运行 Windows 容器:这种情况必须开启 “容器” 功能(这里的 “容器” 功能是 Windows 系统自带的一个组件,专门用于支持 Windows 容器运行,和我们之前说的 Docker 容器概念不同,它是让 Windows 容器能在 Windows 系统上跑起来的基础),否则 Windows 容器无法启动。
简单说,文档的差异是因为它们覆盖的场景不同。作为初学者,如果你主要用 Linux 容器,优先保证 WSL 2 相关的两个功能开启就够了,另外两个开启也是不受影响的。
按照上面的说明,我尝试关掉了Hyper-V,因为我的系统是“Microsoft Windows 版本 22H2(操作系统内部版本 19045.6093)© Microsoft ”,使用的是Linux容器,的确重启电脑,Docker Desktop也能正常运行。后续如果出现状况,我会再来纠正。
五、总结
- WSL 2:Windows 里的 “Linux 小窗口”,轻量、快速,是 Docker 运行 Linux 容器的首选;
- Hyper-V:Windows 自带的 “虚拟机管家”,能创建完整的 Linux 虚拟机,是 WSL 2 不可用时的备选。
理解了这两个工具,你就知道 Docker 在 Windows 上是怎么 “巧妙” 地让 Linux 容器跑起来的了。下一篇我们可以聊聊如何实际操作,用 Docker Desktop 跑起第一个容器~
至于Docker Desktop安装,大家可以看我之前的文章window 10 安装docker,讲的有点晕,凑合还能看,如果出现“Docker Desktop-Unexpected WSL error An unexpected error was encountered while executing a WSL command...”问题,请看Wndows Docker Desktop-Unexpected WSL error-CSDN博客


