最近在学习Docker,需要安装一下linux虚拟机,发现Hyper-V搭建还真的挺方便的,我是Windows10自带的,不用在下载软件了。
由于想要使用Docker私有仓库,在虚拟机中运行registry后,发现本地一直push不上去,网络不通,报错如下:
docker push dial tcp 172.17.116.18:5000: connect: no route to host
结果就开始了一早上的排错历程,网上找了很多都没有跟我情况相同可以直接搞定的。
所以只能自己搞了,网络可以ping通,但是telnet不上,发现使用Hyper-V安装后,使用默认的虚拟交换机。但是默认的虚拟交换机的 IP 和本机的IP是不在一个网段的,因此怀疑是网络问题。 所以我就想尝试下将虚拟机的IP设为固定的。结果发现果然是好的,具体Docker的结果就不展示了,归根到底还是对网络知识匮乏导致的。 主要记录下如何在使用Hyper-V 安装虚拟机设置固定IP。
我的配置环境:其他linux发行版只有第一步不同,可自行google
虚拟机:ubuntu18.04
物理机:windows10
设置虚拟机固定IP
需给虚拟机设置一个固定的网段以及静态IP,我这里使用192.168.137.X的网段
Ubuntu 18.04 采用netplan作为网络配置管理,不需要重启系统
sudo vi /etc/netplan/50-cloud-init.yaml
network:
ethernets:
eth0:
addresses: [192.168.137.200/24]
gateway4: 192.168.137.1
dhcp4: true
optional: true
version: 2
sudo netplan apply
DNS配置(不改也可以的)
DNS还是使用 resolv.conf
sudo vi /etc/resolv.conf
Hyper-V上面的虚拟网络设置
打开Hyper-V上的虚拟交换机管理器:
新建虚拟网络交换机,选择内部网络,点击确定, 输入名称:
右键选中需要设置的虚拟机的设置选项,弹出如下框,选择刚才新建的 ubuntu 的虚拟交换机,点击确定,之后便可重启虚拟机使之生效:
物理机上面的网络设置
我本机使用的是win10,打开控制面板->网络和共享中心->更改适配器设置;
找到刚刚在hyper-v上新增的虚拟网络交换机,右键选择属性 --> 选择如下IPv4协议 --> 设置如下IP地址和子网掩码,其他可留空,IP地址必须是192.168.X.1的设置,这里的X=137是刚才我们在ubuntu上设置的网段,需保持一致。
以上设置好后就可以在本地物理机访问虚拟机了,如下我们ping 下刚才的192.168.137.200,可见是可以ping得通的,这时就可以使用xshell等终端进行连接操作了:
设置虚拟机连接外网
若在虚拟机上有需要访问外网的操作,则在控制面板->网络和共享中心->更改适配器设置中,选中此时物理机使用的网卡,右键属性点击共享选项,如下选中复选框,再选择hyper-v上我们新建的网络,点击确定,这样操作之后我们的虚拟机就可以共享访问到外部的网络了。
最后可以在虚拟机中使用 ping www.baidu.com
进行验证。
这样配置后,我的Docker也可以 push 镜像到虚拟机中的私有仓库了。折腾了一早上,这波有点亏啊。。