Windows的Docker桌面版:该系统上不存在虚拟化程序

25

我是Docker Desktop for Windows的新手。我按照this的指示尝试了hello world示例,但出现了错误。更新

以下是我遵循的步骤:

1 安装了Windows稳定版的Docker

2 在我的Windows 10上启用了Hyper-V和虚拟化

然而,在切换到Linux容器时出现以下错误:

发生了一个错误。 必须在BIOS中启用硬件辅助虚拟化和数据执行保护。请参见https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization-must-be-enabled

请注意,本帖中的问题发生在使用Windows容器时。第3步使用的是Windows容器,而不是Linux容器。

3 尝试运行Hello World时出现以下错误

PS C:\Users\'#.lp> docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
407ada6e90de: Pull complete
9c9e16cbf19f: Pull complete
2cb715c55064: Pull complete
990867d1296d: Pull complete
Digest: sha256:445b2fe9afea8b4aa0b2f27fe49dd6ad130dfe7a8fd0832be5de99625dad47cd
Status: Downloaded newer image for hello-world:latest
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container e646da0e13b5c2ba92db3ade35f6a334f9c2903efde26a78765f55f0498a86f1 encountered an error during CreateContainer: failure in a Windows system call: No hypervisor is present on this system. (0xc0351000) extra info: {"SystemType":"Container","Name":"e646da0e13b5c2ba92db3ade35f6a334f9c2903efde26a78765f55f0498a86f1","Owner":"docker","IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\\ProgramData\\Docker\\windowsfilter\\e646da0e13b5c2ba92db3ade35f6a334f9c2903efde26a78765f55f0498a86f1","Layers":[{"ID":"84cbd4e4-1a6a-5e55-86fa-927ba5be73e0","Path":"C:\\ProgramData\\Docker\\windowsfilter\\417caa6a366bad6fe0d68d2b459510e4c50fda5686b37fb91c9363ca103e9475"},{"ID":"e747017d-859e-5513-b9ad-346002efc167","Path":"C:\\ProgramData\\Docker\\windowsfilter\\43e4d5eeaebc150ea9da0bf919302a2d7646461e3da60b5cbd3db15d3d928698"},{"ID":"e0bd7f8a-622c-589f-9752-eb7b80b88973","Path":"C:\\ProgramData\\Docker\\windowsfilter\\e8ee5f9ec8d67bfebe230b67989dd788506e33627a4400bb63ba098b2a3fd733"},{"ID":"6f13d213-2d8c-5c37-b1f5-770f73ad2d9a","Path":"C:\\ProgramData\\Docker\\windowsfilter\\a731844c4d933200e984524b7273ac3a555792bafec6eab30722fdfd7992ee96"}],"HostName":"e646da0e13b5","HvPartition":true,"EndpointList":["0b88e638-56ea-4157-88a7-67fc3bc35958"],"HvRuntime":{"ImagePath":"C:\\ProgramData\\Docker\\windowsfilter\\e8ee5f9ec8d67bfebe230b67989dd788506e33627a4400bb63ba098b2a3fd733\\UtilityVM"},"AllowUnqualifiedDNSQuery":true}.

以下是系统信息:

   PS C:\Users\'#.lp> docker --version
Docker version 17.09.1-ce, build 19e2cf6
PS C:\Users\'#.lp> docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.09.1-ce
Storage Driver: windowsfilter
 Windows:
Logging Driver: json-file
Plugins:
 Volume: local
 Network: ics l2bridge l2tunnel nat null overlay transparent
 Log: awslogs etwlogs fluentd json-file logentries splunk syslog
Swarm: inactive
Default Isolation: hyperv
Kernel Version: 10.0 16299 (16299.15.amd64fre.rs3_release.170928-1534)
Operating System: Windows 10 Pro
OSType: windows
Architecture: x86_64
CPUs: 4
Total Memory: 7.999GiB
Name: username
ID: 5EK5:6LMU:NPZG:3K2F:W3X7:2G7T:GFYU:GENE:LDBA:UASU:ZF26:T3AU
Docker Root Dir: C:\ProgramData\Docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: -1
 Goroutines: 24
 System Time: 2017-12-24T20:16:32.0728521Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false


PS C:\Users\'#.lp> docker-compose --version
docker-compose version 1.17.1, build 6d101fb0
PS C:\Users\'#.lp> docker-machine --version
docker-machine.exe version 0.13.0, build 9ba6da9

Windows 10专业版版本1709

有什么想法吗?

更新:

PS C:\WINDOWS\system32> docker --version
Docker version 17.12.0-ce, build c97c6d6

PS C:\WINDOWS\system32> docker rm -f $(docker ps -a -q)
a7094c166be7
afbc956d0630
6cc2e3a20dcc
e646da0e13b5
PS C:\WINDOWS\system32> docker rmi -f $(docker images -q)
Untagged: hello-world:latest
Untagged: hello-world@sha256:445b2fe9afea8b4aa0b2f27fe49dd6ad130dfe7a8fd0832be5de99625dad47cd
Deleted: sha256:29528317da62a27024338f18abf29c992d6cdb4087f7d195cb6725bbe6bd15cc
Deleted: sha256:729a95d3f7234b02c27bdaf4fd81fd3fb9453445a85b713398c6bd05ad290ff5
Deleted: sha256:fcea8c486bda6858dee33a0ce494fba4839e542554b0588f6d00833a4155a537
Deleted: sha256:53cda6d9c060289530670af7ac429015f88d1ac58417f94f22c3dd2f03210436
Deleted: sha256:67903cf26ef4095868687002e3dc6f78ad275677704bf0d11524f16209cec48e
PS C:\WINDOWS\system32> docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
407ada6e90de: Pull complete
711a33cda32c: Pull complete
f2954926b3d8: Pull complete
8b6a3aeeca73: Pull complete
Digest: sha256:66ef312bbac49c39a89aa9bcc3cb4f3c9e7de3788c944158df3ee0176d32b751
Status: Downloaded newer image for hello-world:latest
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container 99a306c2336a7bd503bfe8a744ace77cedc19bbc0d15e52b8d899bcea3db6b96 encountered an error during CreateContainer: failure in a Windows system call: No hypervisor is present on this system. (0xc0351000) extra info: {"SystemType":"Container","Name":"99a306c2336a7bd503bfe8a744ace77cedc19bbc0d15e52b8d899bcea3db6b96","Owner":"docker","IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\\ProgramData\\Docker\\windowsfilter\\99a306c2336a7bd503bfe8a744ace77cedc19bbc0d15e52b8d899bcea3db6b96","Layers":[{"ID":"a5eef81d-74bf-53d1-8517-78b635324fdb","Path":"C:\\ProgramData\\Docker\\windowsfilter\\afb89f854af8452a0a12dfb14dc47995e001057c7af209be45ed5ee4813d2ffd"},{"ID":"744a6817-2b8a-5b6a-a717-8932a5863c9f","Path":"C:\\ProgramData\\Docker\\windowsfilter\\21a39c2b74ff220eac42f6f96d6097a7ef0feb192c1a77c0e88068cd10207d33"},{"ID":"ee281c98-febf-545b-bd51-8aec0a88f617","Path":"C:\\ProgramData\\Docker\\windowsfilter\\62439684561a3d30068cae2c804512984637d4c8b489f6f7cbcb5c8fed588af5"},{"ID":"f023cffb-ac18-57fe-9894-a2f1798fd0b0","Path":"C:\\ProgramData\\Docker\\windowsfilter\\1354f5a762901ec48bcf6a3ca8aab615bc305e91315e6e77fdf2c8fee5d587a2"}],"HostName":"99a306c2336a","HvPartition":true,"EndpointList":["2ce5269d-8776-4e84-8b37-4d99fa0a9f7b"],"HvRuntime":{"ImagePath":"C:\\ProgramData\\Docker\\windowsfilter\\62439684561a3d30068cae2c804512984637d4c8b489f6f7cbcb5c8fed588af5\\UtilityVM"},"AllowUnqualifiedDNSQuery":true}.

PS C:\WINDOWS\system32> systeminfo

Host Name:                 XXXX
OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.16299 N/A Build 16299
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          '#.lp
Registered Organization:
Product ID:                XXXXXXXXXXXXXXXXXXXXXXXXXXX
Original Install Date:     10/12/2017, 23:15:17
System Boot Time:          06/01/2018, 13:53:55
System Manufacturer:       System manufacturer
System Model:              System Product Name
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: Intel64 Family 6 Model 15 Stepping 11 GenuineIntel ~2401 Mhz
BIOS Version:              American Megatrends Inc. 0902   , 27/07/2011
Windows Directory:         C:\WINDOWS
System Directory:          C:\WINDOWS\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             en-gb;English (United Kingdom)
Input Locale:              en-gb;English (United Kingdom)
Time Zone:                 (UTC+00:00) Dublin, Edinburgh, Lisbon, London
Total Physical Memory:     8,191 MB
Available Physical Memory: 2,209 MB
Virtual Memory: Max Size:  16,383 MB
Virtual Memory: Available: 4,745 MB
Virtual Memory: In Use:    11,638 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    WORKGROUP
Logon Server:              \\XXXXX
Hotfix(s):                 7 Hotfix(s) Installed.
                           [01]: KB4048951
                           [02]: KB4053577
                           [03]: KB4054022
                           [04]: KB4055237
                           [05]: KB4056887
                           [06]: KB4058043
                           [07]: KB4054517
Network Card(s):           5 NIC(s) Installed.
                           [01]: TunnelBear Adapter V9
                                 Connection Name: Ethernet
                                 Status:          Media disconnected
                           [02]: Qualcomm Atheros AR8131 PCI-E Gigabit Ethernet Controller (NDIS 6.30)
                                 Connection Name: Local Area Connection
                                 Status:          Media disconnected
                           [03]: Compact Wireless-G USB Network Adapter
                                 Connection Name: Wi-Fi
                                 DHCP Enabled:    Yes
                                 DHCP Server:     XXXXX
                                 IP address(es)
                                 [01]: XXX
                                 [02]: XXX
                           [04]: Hyper-V Virtual Ethernet Adapter
                                 Connection Name: vEthernet (Default Switch)
                                 DHCP Enabled:    Yes
                                 DHCP Server:     255.255.255.255
                                 IP address(es)
                                 [01]: X
                                 [02]: X
                           [05]: Hyper-V Virtual Ethernet Adapter
                                 Connection Name: vEthernet (nat)
                                 DHCP Enabled:    Yes
                                 DHCP Server:     255.255.255.255
                                 IP address(es)
                                 [01]: X
                                 [02]: X
Hyper-V Requirements:      VM Monitor Mode Extensions: Yes
                           Virtualization Enabled In Firmware: Yes
                           Second Level Address Translation: No
                           Data Execution Prevention Available: Yes

更新2

仍然出现相同的错误,有什么想法吗?

PS C:\Users\'#.lp> docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
e46172273a4e: Pull complete
61703422ec93: Pull complete
a17b8d9caad6: Pull complete
2dccc7619f71: Pull complete
Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8
Status: Downloaded newer image for hello-world:latest
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: CreateComputeSystem 755110bc7813700701f2325c921fad7a4220c8ff91d620ac51e258cb8b1ab700: No hypervisor is present on this system.
(extra info: {"SystemType":"Container","Name":"755110bc7813700701f2325c921fad7a4220c8ff91d620ac51e258cb8b1ab700","Owner":"docker","IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\\ProgramData\\Docker\\windowsfilter\\755110bc7813700701f2325c921fad7a4220c8ff91d620ac51e258cb8b1ab700","Layers":[{"ID":"535189fb-71a2-598a-bd98-f711c29cf301","Path":"C:\\ProgramData\\Docker\\windowsfilter\\5e4cc131c334b8171b269003b9659ba578f9528372dd28054624d0bbde003b4f"},{"ID":"93d17dd0-2837-5522-a207-2b9e009a9d2b","Path":"C:\\ProgramData\\Docker\\windowsfilter\\87d235bd8d5ca1534f7396bf90d96ee9012875f8ae0e56556af19ebce73cdf80"},{"ID":"6899fe53-2cd7-5ec6-8edc-bf8859eea3e7","Path":"C:\\ProgramData\\Docker\\windowsfilter\\f75a64ae1fe066c392738bc643e1f49f1f0ee0bce4214c8655714b7386cdc3fc"},{"ID":"efbc003d-b691-5d30-ad65-d7dff28ca9e8","Path":"C:\\ProgramData\\Docker\\windowsfilter\\74033dce6b43107101f831d96c6bebe0ceb1df34f8e5c82421ee3f296b20a70c"}],"HostName":"755110bc7813","HvPartition":true,"EndpointList":["93c1c71e-11b5-49d3-82fd-d467d9b625b6"],"HvRuntime":{"ImagePath":"C:\\ProgramData\\Docker\\windowsfilter\\f75a64ae1fe066c392738bc643e1f49f1f0ee0bce4214c8655714b7386cdc3fc\\UtilityVM"},"AllowUnqualifiedDNSQuery":true}).
PS C:\Users\'#.lp> docker --version
Docker version 18.09.2, build 6247962
PS C:\Users\'#.lp>

2
尝试使用Docker Toolbox。它将安装Kitematic。这是Windows操作系统的更好解决方案。 - Dina Bogdan
2
硬件辅助虚拟化和数据执行保护是否已启用,就像错误提示所建议的那样?计算机的制造商和型号是什么? - Andy Shinn
1
在第二步,操作系统显示Hyper-V和虚拟化都已启用。我在BIOS中找不到数据执行保护设置。 - Pingpong
13个回答

19

以下是让我成功的方法:以管理员身份打开命令提示符并运行

bcdedit /set hypervisorlaunchtype auto

然后重新启动

发生了什么事情: 我需要启动一个Android模拟器,但是Android Studio提示“模拟器与Hyper-V不兼容”,所以运行了以下命令来禁用Hyper-V:bcdedit /set hypervisorlaunchtype off


我先运行了这一行,但没有任何变化。我已经安装和卸载了Oracle VBox。之后我再次安装并运行该行,它就起作用了。谢谢。 - Afshin Amiri

7
以下步骤可以解决此问题:
1. bcdedit /set hypervisorlaunchtype auto 
2. reboot computer 
3. docker run hello-world

1
这是一个整洁的步骤列表 :-) 这应该可以解决我的DOCKER问题 :-) - Vetrivel PS

5

如果已经安装了Docker和Hyper-V,请尝试在Docker中重新创建镜像。这对我很有效。

您可以通过在PowerShell中键入以下命令来检查系统中Hyper-V的状态:

systeminfo

如果还没有这样做的话,您也应该切换到 Docker 容器中的 windows。


1
Windows 容器已经启动。如何重新创建镜像?这样做有帮助吗?当我运行 "docker run hello-world" 时出现错误。 - Pingpong
1
请参考我的更新帖子。我删除了图片,并升级到了新版本的Docker,重新尝试了hello-world,但仍然出现相同的错误。 - Pingpong
1
@Pingpong,从PowerShell运行的“systeminfo”命令可以告诉你Hyper-V是否已启用。 要删除镜像,请参考以下文档: https://docs.docker.com/engine/reference/commandline/rmi/ - Francesco Zoccarato
1
按照您的指示执行后,结果的信息已更新至文章底部。问题仍然存在。 - Pingpong
1
是的,请参考我更新的帖子底部,如下所示: PS C:\WINDOWS\system32> docker rm -f $(docker ps -a -q) .. PS C:\WINDOWS\system32> docker rmi -f $(docker images -q) .. - Pingpong

4

我遇到了相同的问题。 必须在BIOS中启用虚拟化来解决它。


3

如果您尝试在Parallels虚拟机内运行Docker for Windows,则必须启用“嵌套虚拟化”。

https://kb.parallels.com/en/116239

这仅适用于专业版和企业版。由于我使用的是桌面版,因此我不得不升级我的版本以支持此功能。


2

如果您正在虚拟机中运行Docker,可能需要了解“嵌套虚拟化”,物理服务器上的虚拟化需要暴露到虚拟机中。

例如,可以通过PowerShell脚本在Hyper-V平台中公开虚拟化:

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

请查看以下链接:在虚拟机中使用嵌套虚拟化运行 Hyper-V。这篇文章介绍了如何在虚拟机中使用嵌套虚拟化来运行 Hyper-V。

1
Docker需要SLAT支持,看起来你的CPU不支持,在你的帖子中我可以看到“二级地址转换:否”。 - Alan Hu

1
我按照这篇文章和其他文章的建议尝试了所有方法都没有效果。对我有效的是以下步骤:
  1. 关闭 Windows 功能: Hyper-V 和 Containers
  2. 强制更新到Windows 10 Pro版本:1803
更新完成后,当我启动docker时,它会询问我是否要启用Hyper-V和Containers。 我回答是。机器重启了两次。
之后一切都完美地工作了。 不幸的是,我不能确定点1还是点2或两者一起解决了问题。 我建议先尝试上面的第一个步骤,然后重新启动,然后再启动docker。 我认为这样做而不是强制更新到Windows 1803版本会解决问题。

1
有趣,谢谢提供信息。我会尝试并更新工单的结果。 - Pingpong

1

我曾经遇到过同样的问题,在将我的Windows升级到最新版本后,问题得到了解决...


1
你安装了哪个版本?Win 10专业版? - Pingpong
1
你安装了哪个版本的Docker?总共3个问题。 - Pingpong
1
我有最新的Windows,但仍然遇到相同的问题。Microsoft Windows [版本10.0.16299.192] - Pingpong
1
微软 Windows [版本 10.0.16299.192] Docker 版本:17.12.0-ce-win47 - Pratik Mehta
如果上述方法无法解决问题,请参考 https://github.com/docker/for-win/issues/1221。 - Pratik Mehta
我们使用相同的Windows版本和Docker版本,但我的不起作用。奇怪!! - Pingpong

1

启用BIOS可视化对我有用。

对于使用华硕主板和AMD CPU的人来说,可以启用可视化。

  1. 进入BIOS(重新启动,按del键,所有这些废话)
  2. 高级
  3. CPU配置
  4. 将SVM模式切换为“已启用”(我错过了它,因为它没有像英特尔那样提到完整的“可视化”单词)

您可能会遇到错误“Docker Desktop需要更新的WSL内核版本。”

以管理员权限运行Powershell

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

下载并安装WSL2 Linux内核更新包

wsl --set-default-version 2

重新启动

完成

电脑配置:
Windows 10 Home
21H2
19044


0
在Windows Power Shell上运行以下命令: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All 如果需要重新启动,则按照步骤操作即可。
如需更多信息或选项,请查看Microsoft文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接