最近在学习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上的虚拟交换机管理器:
![2438927-d680d6da052b4a5d.png](https://i-blog.csdnimg.cn/blog_migrate/d8c90fba481fbf18cceb3b21c07624af.png)
![2438927-90e1a0df2b45319f.png](https://i-blog.csdnimg.cn/blog_migrate/0f343c7e978f3e747ab25775ce43d800.png)
![2438927-9fac93944090b2ff.png](https://i-blog.csdnimg.cn/blog_migrate/71955581426571ecbca1cc5819330c08.png)
3、物理机上面的网络设置
我本机使用的是win10,打开控制面板->网络和共享中心->更改适配器设置;
找到刚刚在hyper-v上新增的虚拟网络交换机,右键选择属性 --> 选择如下IPv4协议 --> 设置如下IP地址和子网掩码,其他可留空,IP地址必须是192.168.X.1的设置,这里的X=137是刚才我们在ubuntu上设置的网段,需保持一致。
![2438927-02da96f3594a3e15.png](https://i-blog.csdnimg.cn/blog_migrate/2d45307fff6f547a0f124175c6374cb4.png)
![2438927-d2014be75d719a7e.png](https://i-blog.csdnimg.cn/blog_migrate/6af75cd896540f3ed7e343b560194c05.png)
若在虚拟机上有需要访问外网的操作,则在控制面板->网络和共享中心->更改适配器设置中,选中此时物理机使用的网卡,右键属性点击共享选项,如下选中复选框,再选择hyper-v上我们新建的网络,点击确定,这样操作之后我们的虚拟机就可以共享访问到外部的网络了。
![2438927-31ed9da9dc02a493.png](https://i-blog.csdnimg.cn/blog_migrate/27b83bd63ff70cef10523506837d3e3a.png)
ping www.baidu.com
进行验证。
这样配置后,我的Docker也可以 push 镜像到虚拟机中的私有仓库了。折腾了一早上,这波有点亏啊。。