一、先把 Windows 的基础条件补齐
1.1 检查虚拟化
先打开任务管理器(Ctrl+Shift+Esc),切到'性能',看 CPU 页里的'虚拟化'是不是已启用。默认大多数机器是开着的,但如果这里没开,后面的步骤基本白做。

1.2 安装虚拟机组件并开启 Hyper-V 相关功能
Windows 专业版
专业版这一步省事,直接在'Windows 功能'里勾选即可,不需要额外脚本。
Win10 家庭版
家庭版没有现成的 Hyper-V 组件,只能先把相关包装进去。做法不复杂:新建一个 123.cmd,把下面这段内容放进去,然后用管理员身份运行。
pushd"%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in('findstr /i . hyper-v.txt 2^>nul')do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
执行完以后按提示重启,看到 Y 就直接重启,不用等太久。
1.3 打开 Windows 功能里的几个开关
按 Win+R,输入 OptionalFeatures。

在'Windows 功能'里把这几项勾上:
'Hyper-V' 'Windows 虚拟机监控程序平台' '容器' '适用于 Linux 的 Windows 子系统'

如果 BIOS / 虚拟化状态还是异常
这类问题通常不是 Docker 本身,而是底层虚拟化链路没起来。可以先跑下面这三条命令,再重启电脑:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
bcdedit /set hypervisorlaunchtype auto
二、安装 WSL
WSL(Windows Subsystem for Linux)就是 Windows 上跑 Linux 二进制的那层兼容环境。Docker Desktop 现在基本也默认靠它工作,绕不开。
2.1 安装 wsl_update_x64.msi
现在直接下安装包双击装就行,地址是:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
2.2 列出可安装的发行版
管理员打开命令行,先看一下在线可装的系统版本:
wsl.exe --list --online
如果只是想装 Ubuntu,直接装对应版本就行:
wsl --install -d Ubuntu-22.04
然后把 WSL 2 设成默认版本:
wsl --set-default-version 2
再更新一下 WSL:
wsl --update
如果 wsl --update 失败,多半不是命令写错,而是本机的 WSL 组件状态不对。手动安装可以参考官方文档:
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
三、安装 Docker
3.1 下载 Docker 安装包
这里用的是阿里云镜像源:

#docker 安装包下载 https://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/
# cmd 命令安装 docker 到指定的目录
start /w """Docker Desktop Installer.exe" install --installation-dir=D:\soft\Docker
start /w """Docker Desktop Installer.exe" install --installation-dir=D:\Docker
3.2 正常安装
安装界面默认两个选项都勾上,直接点 OK。

3.3 安装完成后检查版本
安装结束后点中间的 Close,桌面一般会重新拉起 Docker。

再按 Win+R,输入 cmd,检查一下版本号:
docker --version

四、配置国内仓库加速
把下面这段内容填到 Docker 的配置里。
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://dockerhub.azk8s.cn",
"https://docker.1panelproxy.com",
"https://docker-proxy.741001.xyz",
"https://registry.docker-cn.com",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io",
"https://docker.unsee.tech",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn",
"https://docker.chenby.cn",
"http://mirror.azure.cn",
"https://dockerpull.org",
"https://dockerhub.icu",
"https://hub.rat.dev"
],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {"buildkit": true},
"builder": {"gc": {"enabled": true, "defaultKeepStorage": "20GB"}}
}

4.1 命令行验证 Docker 是否可用
按 Win+R 打开 cmd,随便跑一组命令试试:
docker pull registry.cn-hangzhou.aliyuncs.com/rwit/nginx:latest
docker run --name my-nginx -d -p 81:80 registry.cn-hangzhou.aliyuncs.com/rwit/nginx:latest
docker ps
docker stop my-nginx
docker rm my-nginx
这一步的重点不是 nginx 本身,而是确认拉镜像、起容器、停容器、删容器这条链路都通了。
五、WSL 的几个常用调整
# 把 wsl 的默认版本换成 2
wsl --set-default-version 2
# 国内网络减少下载延迟
wsl --update --web-download
# cmd 命令安装 docker 到指定的目录
start /w """Docker Desktop Installer.exe" install --installation-dir=D:\Docker
六、WSL 卸载和重装
# 查看系统
wsl --list
# 显示所有 wsl 分发子系统
wsl.exe --list --online
# 安装
wsl --install -d Ubuntu-24.04
wsl --update
# 导出系统到其他磁盘
wsl --export Ubuntu-24.04 D:\ubuntu24.04.tar
# 注销当前分发版本
wsl --unregister Ubuntu-24.04
# 重新导入
wsl --import Ubuntu-24.04 D:\soft\ubuntu24 D:\ubuntu24.04.tar --version2
# 设置默认登陆用户为安装时用户名
ubuntu config --default-user Username
# 删除导出的包
del D:\ubuntu24.04.tar
这套命令基本覆盖了迁移、备份、重装几个常见场景。真遇到系统盘不够,导出再重导入比直接折腾系统省事。
七、Win10 的 Windows Update 启动失败并提示'拒绝访问'
这个问题和 Docker 没直接关系,但在一些老机器上会连带影响系统组件更新,顺手一起修掉更省心。
7.1 修改注册表权限
- 按
Win+R,输入regedit打开注册表编辑器。

- 找到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv。

- 右键
wuauserv,进入【权限】→【高级】。

- 点【更改】,把所有者从
SYSTEM改成Administrator。如果Administrator不行,再试Administrators。确认后回到everyone,把完全控制勾上。

所有者修改后的状态如下:

- 处理完以后再试着启动 Windows Update。

八、wsl --update 报'灾难性故障'时怎么处理
我之前在一台 Windows 10 机器上升级 WSL2 时,wsl --update 直接报'灾难性故障',也不给具体原因。这个时候继续反复执行命令意义不大,直接换安装包更快。
到 WSL 的 GitHub Releases 页面下载最新安装包:
https://github.com/microsoft/WSL/releases
安装时基本就是一路跑进度条,结束后窗口自己关掉,不会弹什么'安装成功'的提示。装完再运行:
wsl --version
如果版本号已经变成安装包对应的版本,再执行一次 wsl --update,通常就能过了。


