win10家庭版安装docker解决方案
安装docker,hyper-v
1. 下载Docker Desktop Installer.exe先不安装
2. 修改注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
修改键EditionID
原为CoreCountrySpecific
改为Professional
电脑重启后这个值会恢复为CoreCountrySpecific,不会产生别的影响。
3. 安装
首次安装会重启,重启后需修改注册表,参照第二步
4. 安装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
5. 安装后开始菜单搜索hyper-v应该能搜到
这个是hyper-v管理器
如果搜不到:
控制面板->程序->启用或关闭windows功能
需要勾选hyper-v的所有内容
之后再在开始菜单搜索看是否出现
测试
1. 先退出DockerDesktop
2. 检查注册表是否已修改为Professional
3. 若是,则启动DockerDesktop
若没有启动DockerDesktop执行docker ps则会报错:
error during connect:Get http:///.../containers/josn;open //./pipe/docker_engine:The system cannot find the file specified.
In the default daemon configuration on Windows,the docker client must be run elevated to connect.
This error may also indicate that docker daemon is not running.
启动后,状态为docker starting时执行:docker ps会报错
Error response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file specified.
启动后,状态为docker running时执行命令正常
PS C:\Users\gladiateur> docker ps
>>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\Users\gladiateur> docker version
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:23:10 2020
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:29:16 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
PS C:\Users\gladiateur>
注册表修改后发现当启动docker desktop时hyper-v管理器里多了一个虚拟机,并且是“正在运行”。当退出docker desktop时该虚拟机状态变为“关闭”
若注册表的值仍为修改前的CoreCountrySpecific,那么无论启动或是退出docker desktop该虚拟机的状态都是“关闭”。