Docker - Win10 Hyper-V 和 VirtualBox 冲突的问题

最近有同学问,在自己的Win10上,使用VirtualBox或相关的工具例如Vagrant,docker-machine等创建虚拟机,会提示电脑没有开启Intel的VT-x或者ADM-V,要求你去BIOS开启。

重启电脑进入BIOS,发现VT-x明明已经enable开启了,这是为什么呢?

此时的原因多半是因为,当前的win10开启了微软的Hyper-V虚拟化支持,解决方法也很简单,就是把Hyper-V关掉,最简单的关闭Hyper-V的办法是以管理员权限打开Powershell,然后运行

bcdedit /set hypervisorlaunchtype off

然后重启电脑即可。

那为什么开启了Hyper-V以后,VirtualBox或者VMware就用不了呢?这里有一篇很好的解答https://superuser.com/questions/1208850/why-virtualbox-or-vmware-can-not-run-with-hyper-v-enabled-windows-10

简单来讲,像VirtualBox或者VMware workstations,他们是二层的hypervisors(或者叫Type 2),什么叫2层的hypervisors,就是它需要运行在一个宿主机上,类似需要一个Host OS,这个OS需要直接运行在物理机上,然后我们在这个Host OS上安装VirtualBox或者VMware workstation。而像Hyper-V或者Vmware的ESxi,他们是level 1的hypervisors(或者叫Type 1),就是他们可以直接安装在物理机上,不需要Host OS。

理解了这一个以后,我们再看开启了Hyper-v的Win10,它就类似在Hyper-v上通过虚拟化安装运行了Win10,也就是此时的Win10我们就可以把它看成一台虚拟机了,在这个虚拟机里面,我们安装的VirtualBox,它无法访问到之前可以访问到的VT-x,所以也就无法使用虚拟化技术了。

对于这个限制,个人感觉VirtualBox后续可能会改进,因为随着一些需要Hyper-v支持的工具的退出,越来越多人可能会选择开启Hyper-V功能,比如WSL2的推出(https://devblogs.microsoft.com/commandline/wsl-2-is-now-available-in-windows-insiders/)

VirtualBox6.0已经加入了Nested Virtualization的支持,就是在一个虚拟机里通过virtualbox创建虚拟机,就是虚拟机的嵌套,但是这个只支持AMD的CPU,而且应该不支持Hyper-v的虚拟机里创建虚拟机这种嵌套。

等等吧,个人还是比较看好Virtualbox,也比较喜欢Vagrant。

(如果要重新打开Hyper-V,可以以管理员身份打开Powershell,然后运行 bcdedit.ext /set hypervisorlaunchtype auto start 然后重启电脑)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值