Windows10 Pro 1809运行Docker hello-world报错:缺失必要功能
hello-world的启动错误 首先,先明确你遇到的错误信息:
docker: Error response from daemon: hcsshim::CreateComputeSystem 0e3c581b7316f66fd396f6007f3260ded7d934c5e6d53c9fedba279b9c0044c2: 虚拟机无法启动,因为未安装必要功能。(额外信息:{"SystemType":"Container","Name":"0e3c581b7316f66fd396f6007f3260ded7d934c5e6d53c9fedba279b9c0044c2","Owner":"docker","IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\ProgramData\Docker\windowsfilter\0e3c581b7316f66fd396f6007f3260ded7d934c5e6d53c9fedba279b9c0044c2","Layers":[{"ID":"08298683-92e6-5d81-8efa-07df462bc835","Path":"C:\ProgramData\Docker\windowsfilter\da67c59750c9d72f917f4169d58fff3285b27d01c30c159f437b8ec8bace3fd3"},{"ID":"8ffbf2ed-0796-5433-969d-24c7c60eed76","Path":"C:\ProgramData\Docker\windowsfilter\20785c70b0b36964948ecf0180bbe644306ed1f70686864f3cf476229f3ae054"},{"ID":"d0522a69-fb9e-53ff-8eec-0492669a13de","Path":"C:\ProgramData\Docker\windowsfilter\2c662c56ef3ffafe3f5cb6180ac24154c081866bb0a6c0e3c27fa5a3bcc957a7"}],"HostName":"0e3c581b7316","HvPartition":true,"EndpointList":["63F24577-D177-4DE9-8071-9325D00D5499"],"HvRuntime":{"ImagePath":"C:\ProgramData\Docker\windowsfilter\2c662c56ef3ffafe3f5cb6180ac24154c081866bb0a6c0e3c27fa5a3bcc957a7\UtilityVM"},"AllowUnqualifiedDNSQuery":true})
这个问题根源在于Windows运行容器所需的核心功能没有启用,下面是具体解决步骤:
启用Hyper-V和容器功能(图形界面方式)
- 按下Win+R,输入
appwiz.cpl回车打开「程序和功能」 - 点击左侧的「启用或关闭Windows功能」
- 在弹出的窗口中,勾选Hyper-V和容器两个选项
- 点击「确定」,等待系统安装功能完成后重启电脑
- 按下Win+R,输入
启用Hyper-V和容器功能(PowerShell快捷方式)
- 右键开始菜单,选择「Windows PowerShell(管理员)」
- 依次执行以下两条命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All Enable-WindowsOptionalFeature -Online -FeatureName Containers -All - 命令执行完成后,输入
Restart-Computer重启系统
验证Docker Desktop配置
- 重启后打开Docker Desktop,等待它完全启动(托盘图标显示绿色)
- 进入设置界面,确认当前容器模式是Windows容器(如果之前切换到WSL2模式,可能需要切换回来,Windows 10 1809对WSL2的支持需要额外更新包)
- 若坚持使用WSL2模式,确保已安装WSL2内核更新包后再尝试启动容器
修复Hyper-V损坏(如果以上步骤无效)
- 管理员PowerShell中执行命令禁用Hyper-V:
dism /online /disable-feature /featurename:microsoft-hyper-v /all - 重启电脑后,再重新启用Hyper-V和容器功能
- 检查Hyper-V相关服务是否正常运行:按下Win+R输入
services.msc,找到「Hyper-V Virtual Machine Management」服务,确保它的启动类型是「自动」且处于运行状态
- 管理员PowerShell中执行命令禁用Hyper-V:
完成以上步骤后,再次运行docker run hello-world,应该就能正常启动容器了。
内容的提问来源于stack exchange,提问作者Cameron




