必须启用硬件虚拟化并安装WSL2,再安装Docker Desktop时勾选“Use WSL 2 based engine”,重启后重新登录系统,方可使Docker真正运行在WSL2上,避免Hyper-V导致的内存泄漏与高功耗问题。

在 Windows 11 上启用 WSL2 并让 Docker Desktop 使用其作为后端引擎,是获得接近原生 Linux 容器性能的关键一步;跳过这步直接装 Docker Desktop,默认可能回退到旧版 Hyper-V 引擎,导致内存泄漏、vmmem 进程长期霸占数 GB 内存、风扇狂转、笔记本续航骤降。
确认硬件与系统前提
按下 Ctrl + Shift + Esc 打开任务管理器 → 切换到“性能”选项卡 → 查看“CPU”右侧的“虚拟化”状态是否为【已启用】。若显示“已禁用”,必须重启电脑进入 BIOS/UEFI(开机时狂按 F2/F10/Del),找到 Intel VT-x 或 AMD-V 选项并设为 Enabled。
按 Win + R 输入 winver 回车 → 确认系统版本 ≥ Windows 11 22H2(即内部版本号 ≥ 22621)。低于此版本需先升级系统。
以管理员身份启用 WSL2 功能
右键“开始”按钮 → 选择“终端(管理员)”或“Windows PowerShell(管理员)” → 一次性粘贴并执行以下两条命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
⚠️ 这两步缺一不可,且【必须重启电脑】才能生效。不重启,后续所有操作都会失败。
安装 WSL2 内核并设为默认
重启后,再次以管理员身份打开终端,执行:
wsl --update
如果返回错误代码 0x80240438 或提示“无法连接到 Microsoft 更新服务器”,说明 Windows Update 通道异常,此时必须手动安装内核包:打开浏览器访问 https://www.php.cn/link/374d383550f673cead5c903caca73d6f → 下载 wsl_update_x64.msi → 双击运行完成安装。
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
安装完成后,执行:
wsl --set-default-version 2
再运行 wsl --status,输出中应明确显示 Default Version: 2 且无报错。
安装 Docker Desktop 并绑定 WSL2 引擎
前往官网下载最新版 Docker Desktop Installer.exe(2026年10月推荐使用 v4.35+),双击运行安装向导。
关键配置页务必勾选:【Use the WSL 2 based engine】,取消勾选“Enable Windows Containers”。
安装完成后点击“Close and log out”,【必须完全退出当前 Windows 用户会话,重新登录】——仅重启 Docker Desktop 或刷新资源管理器无效,WSL 集成不会自动激活。
重新登录后启动 Docker Desktop,首次运行会弹出许可协议,点击 Accept;几秒后右下角托盘图标变为鲸鱼图标且无感叹号,即表示 WSL2 引擎已就绪。
验证 Docker 是否真正跑在 WSL2 上
方法一:终端中执行 docker info | findstr "DefaultRuntime\|KernelVersion" → 若看到 DefaultRuntime: runc 且 KernelVersion 显示 Linux 内核号(如 5.15.x),说明容器运行在 WSL2 内部。
方法二:打开 PowerShell,运行 wsl -l -v → 应看到至少两个已注册发行版:docker-desktop 和 docker-desktop-data,状态均为 Running,VERSION 列为 2。
方法三:运行 docker run --rm hello-world → 输出完整“Hello from Docker!”后,立即打开任务管理器 → “详细信息”页签 → 查找 vmmem 进程 → 右键 → “转到服务”,确认其归属服务为 Docker Desktop Service 而非旧版 vmms 或 vmcompute。

















