前言
为什么需要理解虚拟机的网络机制呢?主要原因是我安装了windows的docker之后vmware里面的虚拟机打不开了
一通操作把vmware的虚拟机打开了,但是虚拟机的网络又用不了了,所以有必要深入了解下虚拟机网络的相关知识
何为 Hypervisor
Hypervisor又称Virtual Machine Monitor(VMM)是用于创建和运行虚拟机(VM)的计算机软件,固件或硬件。承载Hypervisor和虚拟机的计算机称为宿主机(Host Machine),运行于宿主机上的虚拟机称为客户机(Guest Machine)。 Hypervisor为客体操作系统提供虚拟的作业平台并管理客体操作系统,使得不同操作系统的众多实例可以共享虚拟的硬件资源
可以简单地理解为 Hypervisor 为虚拟机的运行提供了软件层面的基础
Hypervisor 通常分为两类, Type-1 和 Type-2
- Type-1:直接运行在硬件层面上来管理虚拟机(例如Hyper-V)
- Type-2:像其他应用程序一样运行在常规的操作系统中,一个客户机作为一个进程运行在宿主机上(例如VMWare WorkStation)
冲突是什么
Docker 官方出品的 Windows 客户端,而其正常运行的条件之一是系统开启了 Hyper-V 虚拟化服务。
由上文知 Hyper-V 是 Type-1 的 Hypervisor,这将使得像 VMware 等作为 Type-2 Hypervisor 的软件无法运行
使用 Hyper-V 技术的 Docker 客户端与其他 Type-2 Hypervisor 不能同时运行, 必须重启并关闭 Hyper-V 才能再次运行其他的 Type-2 Hypervisor 软件
vmware与docker配置
由于docker与vmware的不兼容,导致出现两个软件无法同时使用以及网络方面的问题
所以在使用时只能二者选择其一,以下是使用两个软件时需要做的相关配置
使用vmware
步骤一:禁用Device Guard或Credential Guard:
1.禁用用于启用Credential Guard的组策略设置。
- 在主机操作系统上,右键单击**“开始” > “运行”**,键入
gpedit.msc
,然后单击“ 确定”,打开本地组策略编辑器。 - 转至本地计算机策略 > 计算机配置 > 管理模板>系统 >Device Guard(或者是: 设备防护) > 启用基于虚拟化的安全性。
- 选择已禁用。
2.转到**“控制面板” >“ 卸载程序” >“ 打开或关闭Windows功能”**以关闭Hyper-V。
3.选择不重启。
步骤二:通过命令关闭Hyper-V(控制面板关闭Hyper-V起不到决定性作用,要彻底关闭Hyper-V)
以管理员身份运行Windows Powershell (管理员)(Windows键+X)
运行下面命令并重启电脑!
|
|
使用docker
Docker是基于Hyper-V服务的,Hyper-V主机服务的运行可以用命令开启关闭
控制面板(可选)
PowerShell的管理员模式
对应的打开Hyper-V的命令:
|
|
重启电脑!
docker windows 安装
为什么虚拟机连不上网络
参考
使用NAT模式会出现无法访问外网的情况,可能原因与校园网的配置有关,所以解决方法是使用==桥接模式==,就可以访问外网了
- 如果要虚拟机上网,勾不勾该选项,没什么区别。
- 如果不勾的话,无线和有线切换,很有可能IP地址发生变化,需要重新查看。
分割线——下面的方法理论上可行,但是我配置不成功
猜测的原因可能与vEthernet有关
vEthernet是Win10系统在添加了Hyper-V虚拟机组件之后自动创建的虚拟网卡
方法一:修改主机网络配置
1.找到自己现在连接的网络,右键→属性→共享→勾选允许其他网络连接→将虚拟机的NAT网络 VM8共享连接到该网络 保存
==2.重新配置vmware的net网络==
因为上一步把vmnet8的网络配置改了,所以要重新配置vmware的net网络
方法二:禁用Hyper-V主机服务
控制面板
PowerShell的管理员模式
对应的打开Hyper-V的命令:
|
|
重启电脑!
上述步骤操作完成之后vEthernet就删除了
参考
解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法