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

简介: 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 然后重启电脑)

目录
相关文章
|
虚拟化 Docker Windows
win10使用Docker以及在天池比赛上提交容器镜像文件
win10使用Docker以及在天池比赛上提交容器镜像文件
302 1
|
存储 虚拟化 Docker
windows系统安装docker(Hyper-V方式)
windows系统安装docker(Hyper-V方式)
1718 2
|
Docker Windows 容器
Docker在win10上报错,error during connect: In the default daemon configuration on Windows
Docker在win10上报错,error during connect: In the default daemon configuration on Windows
671 0
|
Docker 容器
解决升级 win10 中的 docker desktop 2.3.0.x 后无法启动
解决升级 win10 中的 docker desktop 2.3.0.x 后无法启动
|
缓存 Linux 开发工具
win10下docker desktop:使用dockerfile基于CentOS:8创建可以使用vim的镜像
win10下docker desktop:使用dockerfile基于CentOS:8创建可以使用vim的镜像
423 0
|
关系型数据库 MySQL Docker
在win10安装docker及部署mysql5.6过程
在win10安装docker及部署mysql5.6过程
474 0
|
消息中间件 RocketMQ Docker
win10中 docker 安装rocketmq和解决坑connect to <172.17.0.3:10909> failed
win10中 docker 安装rocketmq和解决坑connect to <172.17.0.3:10909> failed
744 0
|
消息中间件 网络协议 Kafka
win10中docker安装kafka环境和操作
win10中docker安装kafka环境和操作
448 0
|
存储 NoSQL Java
Win10上操作Docker,一样可以纵享丝滑!
Win10上操作Docker,一样可以纵享丝滑!
492 1
|
存储 网络协议 关系型数据库
金瓯无缺江河一统|Win10系统基于Docker和Python3搭建并维护统一认证系统OpenLdap
OpenLdap(Lightweight Directory Access Protocol)是什么?它其实是一个开源的、具备工业标准特性的应用协议,可以使用TCP协议提供访问控制和维护分布式信息的目录信息。这是一个传统意义上的书面解释,是的,毫无疑问,你会一脸懵逼。
金瓯无缺江河一统|Win10系统基于Docker和Python3搭建并维护统一认证系统OpenLdap