前言

为什么需要理解虚拟机的网络机制呢?主要原因是我安装了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(或者是: 设备防护) > 启用基于虚拟化的安全性
  • 选择已禁用
  • img

2.转到**“控制面板” >“ 卸载程序” >“ 打开或关闭Windows功能”**以关闭Hyper-V。

img

3.选择不重启。

步骤二:通过命令关闭Hyper-V(控制面板关闭Hyper-V起不到决定性作用,要彻底关闭Hyper-V)

以管理员身份运行Windows Powershell (管理员)(Windows键+X)

运行下面命令并重启电脑!

1
bcdedit /set hypervisorlaunchtype off

使用docker

Docker是基于Hyper-V服务的,Hyper-V主机服务的运行可以用命令开启关闭

控制面板(可选)

img

PowerShell的管理员模式

对应的打开Hyper-V的命令:

1
bcdedit /set hypervisorlaunchtype auto

重启电脑!

docker windows 安装

Windows10 Docker安装详细教程

Windows 10 - Docker

为什么虚拟机连不上网络

参考

VMware 虚拟机里连不上网的五种解决方案

VMware虚拟机网络配置-NAT篇

使用NAT模式会出现无法访问外网的情况,可能原因与校园网的配置有关,所以解决方法是使用==桥接模式==,就可以访问外网了

image-20230717193154546

VM桥接模式下 复制物理网络连接状态选项有什么作用?

  • 如果要虚拟机上网,勾不勾该选项,没什么区别。
  • 如果不勾的话,无线和有线切换,很有可能IP地址发生变化,需要重新查看。

分割线——下面的方法理论上可行,但是我配置不成功

猜测的原因可能与vEthernet有关

image-20230717154345477

vEthernet是Win10系统在添加了Hyper-V虚拟机组件之后自动创建的虚拟网卡

方法一:修改主机网络配置

1.找到自己现在连接的网络,右键→属性→共享→勾选允许其他网络连接→将虚拟机的NAT网络 VM8共享连接到该网络 保存

image-20230717162326203

==2.重新配置vmware的net网络==

因为上一步把vmnet8的网络配置改了,所以要重新配置vmware的net网络

VMware虚拟机网络配置-NAT篇

方法二:禁用Hyper-V主机服务

控制面板

img

PowerShell的管理员模式

对应的打开Hyper-V的命令:

1
bcdedit /set hypervisorlaunchtype auto

重启电脑!

上述步骤操作完成之后vEthernet就删除了

image-20230717161303526

参考

Windows 下 Docker 与 VMware 共存

Win下Docker与VM虚拟机不兼容

解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法