由于最近在研究Docker, 于是需要用到虚拟机,安装Ubuntu 16.04到Hyper-V并部署Docker。这个过程中填平了几个小坑,为了大家以后遇到类似情况节省时间,我将这几个小坑的问题和解决方法共享出来,供大家参考。
坑一:
Virtual Box和Hyper-V不能兼容:由于原来安装Hadoop的Cloudera试用包是Virtual Box的镜像文件,为了运行这个镜像不得不关掉Hyper-V。

#关闭hyper-v
bcdedit /set hypervisorlaunchtype off。
#启用hyper-v
bcdedit /set hypervisorlaunchtype auto

坑二:
使用WLAN连接时,用Hyper-v创建的虚拟交换机会建立一个网桥来转接WLAN网络,如下图是新建一个虚拟交换机
这里写图片描述
现在看网络配置如下图所示,系统创建了一个网桥,然后虚拟机创建的虚拟网卡vEthernet通过桥接连到外部网路上,实在是不知道为啥微软要这么干,估计这个是MS家虚拟化方案的组成部分,网络路由在桌面系统也搞成虚拟化,然后桥接。原来的那个WLAN已经彻底没有用到了。
这里写图片描述
坑三:
由于虚拟机的虚拟网卡是通过这个网桥去连接的,所以网络协议也要网桥支持,非常搞笑的是,IPV4协议在这里默认是关闭的。如果想让虚拟机能够获得地址必须要手动启用IPV4协议,并配置IP地址(可以自动获取)和DNS:
这里写图片描述
坑四:
Unbuntu14版本的网路配置需要手工填写:
DNS和网卡的IP, 网关,掩码

     #如果配置动态获取ip,则在上述文件中加入以下内容:
     auto eth0
     iface eth0 inet dhcp

     #如果配置静态ip,则添加如下内容:
     auto eth0
     iface eth0 inet static
     address 192.168.1.4
     netmask 255.255.255.0
     gateway 192.168.1.1

     #要是配置生效,需要重启网卡:
     ifconfig eth0 down
     ifconfig eth0 up

然后必须手动配置DNS:
修改如下文件,默认文件是空的
sudo vim /etc/resolvconf/resolv.conf.d/base
在里面加入你想添加的DNS服务器,一行一个

nameserver 8.8.8.8
nameserver 8.8.4.4

然后运行下面的命令,使DNS的配置生效

sudo /sbin/resolvconf -u

不能够直接去修改 /etc/resolv.conf,因为重启以后直接修改的配置就没有了。

至此可以重启下虚拟机,终于可以连上网络了:
先用ifconfig命令看看网卡配置,看上去正常了。:)
这里写图片描述
接下来update一下,确认OK。
这里写图片描述
上述几个小坑虽然都是小问题,还是浪费我不少时间,希望以后看到本文的同学能够顺利用Hyper-V搞定虚拟机。

知识共享许可协议
本作品采用知识共享署名 4.0 国际许可协议进行许可。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐