Docker-on-Windows-Home-Blog
Docker on Windows 11 Home 折腾全记录
背景
Windows 11 家庭中文版,想装 Docker Desktop,结果每一步都在踩坑。前后折腾了多次重启、多次修复、最终绕了个大弯才跑起来。
遇到的问题
1. Ubuntu 装不上
wsl --install -d Ubuntu 卡死,等半天没反应。换 winget、Microsoft Store 也都失败。用清华镜像下载手动 tar 包也是 404。
原因: 本地 DNS(192.168.84.21)对 raw.githubusercontent.com 做了黑洞解析,返回 0.0.0.0。wsl --install 要从 GitHub 拉发行版列表和镜像,连接不上。
2. WSL 提示“此计算机上未启用虚拟化”
wsl --status 报:
WSL2 无法启动,因为此计算机上未启用虚拟化。
但 systeminfo 显示 A hypervisor has been detected,说明 BIOS 虚拟化是开的。
原因: Windows 可选功能 VirtualMachinePlatform 和 Microsoft-Windows-Subsystem-Linux 没启用,或者启用了但文件没部署成功。
3. DISM 启用功能后重启就“撤销更改”
dism /enable-feature 提示需要重启,重启后 CBS 处理到一半失败,系统自动回滚,回到原样。重复多次都一样。
原因: Windows 11 家庭版的 CBS 仓库注册了 VirtualMachinePlatform 的元数据,但实际的 vmcompute.exe、compute.sys 等驱动文件在家庭版中不存在。每次重启时 CBS 试图安装但找不到文件,只好回滚。
4. Docker Desktop 报“Virtualization support not detected”
Docker Desktop 启动后一直卡在 Starting,报:
engine linux/wsl failed to start: Virtual Machine Platform not enabled
No virtualization available
原因: Docker 的 WSL2 后端需要 Host Compute Service(HCS/vmcompute),这个服务依赖 VirtualMachinePlatform 功能。家庭版没有这个功能,所以 Docker 起不来。
5. 手动部署 vmcompute 失败
尝试从 WinSxS 里提取 vmcompute.exe 手动部署到 System32、创建服务。
结果:vmcompute.exe 启动就报 STATUS_DLL_NOT_FOUND,缺少 compute.sys 内核驱动——这个驱动家庭版的 WinSxS 里根本没有。
6. 重置电脑后问题依旧
选择“重置此电脑 → 保留我的文件”后,VirtualMachinePlatform 还是 0x60(Staged)状态。
最终解决步骤
最终是在 Windows 更新升级到 24H2 预览版之后,按以下顺序搞定的:
# 1. 修复系统映像
DISM /Online /Cleanup-Image /RestoreHealth
# 2. 启用 WSL 和虚拟机平台(管理员 PowerShell)
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 3. 开启 Hyper-V 启动
bcdedit /set hypervisorlaunchtype auto
# 4. 重启
# 5. 设置 WSL 默认版本并安装 Ubuntu
wsl --set-default-version 2
wsl --install -d Ubuntu-22.04 --web-download
注意:--web-download 因为 DNS 问题也会失败,所以实际用的是 Microsoft Store 安装的 Ubuntu 24.04 LTS 包,直接启动 ubuntu2404.exe 让它自动注册到 WSL。
验证
wsl -l -v
# 输出: Ubuntu-24.04 Running 2 ✅
docker run hello-world
# 输出: Hello from Docker! ✅
docker info
# Server Version: 29.5.3 ✅
# Kernel Version: 6.18.33.1-microsoft-standard-WSL2 ✅
一些教训
-
DNS 黑洞比想象中更坑 — 本地网络对 GitHub 的域名做了屏蔽,wsl --install、winget msstore 源都会受影响。解决办法是用 hosts 文件绕过:
185.199.108.133 raw.githubusercontent.com -
Windows 11 家庭版缺 VirtualMachinePlatform 的二进制文件 — 这是产品设计层面的限制,不是修能解决的。最终是通过系统大版本更新(升级到 24H2)才让 DISM 能正确部署这些组件。
-
docker --version 不等于 docker 能用 — 那个只是 CLI 版本号。要看
docker info有没有 Server 信息才算数。 -
com.docker.service 没用 — 这个服务一直处于 Stopped 状态,但只要 Docker Desktop GUI 跑起来,后端引擎就能正常工作。
最终状态
- ✅ Docker Desktop 正常运行
- ✅ WSL2 + Ubuntu 24.04 LTS
- ✅ 可以
docker run hello-world - ✅ 可以
docker run nginx - ⚠️ 本地 DNS 仍屏蔽 GitHub,已用 hosts 文件绕过
- ⚠️ 系统从 22631 升级到了 26200(24H2 预览版)
更多推荐
所有评论(0)