直接安装是不行的。Windows10 家庭版PC从硬件到软件缺少以下系统设置或软件:
- BIOS 的 VT-x (名称可能是 Intel Virtualization Technology) 或 VT-d 选项需要启用
- 在 启用或关闭 Windows 功能面板 中勾选 虚拟机平台 和 适用于Linux的Windows子系统
- WSL1 需要升级到 WSL2
- 系统需要安装 Hyper-V
1. 启用 VT-x 或 VT-d
开启或重启计算机,在进入用户界面之前按下 F12 进入 BIOS 配置界面。找到 Intel Virtualization Technology 并设置为 Enabled。
如果 BIOS 不存在 Intel Virtualization Technology 选项,则尝试找到 VT-d 并设置为 Enabled。
最后保存设置并进入系统即可。
2. 勾选 虚拟机平台 和 适用于Linux的Windows子系统
在 Windows 设置 面板中搜索 启用或关闭Windows功能 进入 Windows 功能配置页面。
检查并勾选 虚拟机平台 和 适用于 Linux 的 Windows 子系统 这两项。
3. 升级 WSL
请查看 在 Windows10 中基于 WSL2 安装 Linux,以完成 WSL2 的升级。不过这里不需要安装 Ubuntu 等子系统,只需要完成 WSL 的升级即可。
4. 安装 Hyper-V
Windows10 家庭版默认是没有安装 Hyper-V 的,因此需要我们手动安装。
首先用编辑器新增一个脚本文件 Hyper-V.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,计算机会自动重启。到此,我们便完成了 Hyper-V 管理器的安装。
再次打开计算机后,我们能在 启用或关闭 Windows 功能面板 中发现 Hyper-V 的选项了。
5. 安装 Docker Desktop
上面的 4 个步骤都完成后,接下来就可以 下载 Docker Desktop 并进行安装了。你大概率能成功安装并开启 Docker 了。
安装完成后,最好把 Docker 的镜像源指向国内的供应方。操作方法是在 Docker Desktop 界面中依次选择 Setting -> Docker Engine,然后为配置文件添加 "registry-mirrors" 项即可。示例如下:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://dockerproxy.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "200m",
"max-file": "3",
"compress": "true"
}
}
最后,为了检验我们的成果,打开命令行窗口,输入并执行 docker run hello-world
,看到 Hello from Docker! 则说明我们以后就可以愉快地使用 Docker 啦!
不过需要提醒的是,虚拟机软件如 VirtualBox 与 Docker 无法同时在 Windows 中运行!因为 Docker 要求启动 Hyper-V,而虚拟机软件要求关闭 Hyper-V。如果某一时刻需要运行虚拟机软件,则执行以下命令关闭 Hyper-V,重启系统后再打开虚拟机。
bcdedit /set hypervisorlaunchtype off
如果希望使用 Docker 软件,则执行以下命令开启 Hyper-V,重启后再使用 Docker 即可。
bcdedit /set hypervisorlaunchtype auto
最后提醒一下,Hyper-V 会占用部分 IPv4 端口,如果您发现某个接口被占用又找不到相关进程,可以执行以下命令查看端口是否处于端口排除范围:
netsh interface ipv4 show excludedportrange protocol=tcp
然后您就可以继续选择使用其他接口或关闭 Hyper-V 并重启了。