ubuntu重启后容器的ip变化

ubuntu重启后容器的ip变化,第1张

bridge 桥接网络 默认网络类型,容器内不特殊指定,就用此类型。不特殊指定的话,分配的ip为172.17.0.x

none 无指定网络 容器内不指定局域网ip

host 主机网络 和主机共用一个ip,会出现和宿主机争抢端口情况,非特殊需要尽量少用

最常用的就是利用bridge,自定义虚拟网桥来固定IP。默认情况下,docker的容器重启之后,会自动分配IP,导致一次重启IP变化。所以需要对docker容器指定IP。由于docker默认的网络不能固定ip地址,我们创建自定义虚拟网桥,进行固定IP的分配准备工作: 需要.netcore或者java程序一套,引入consul第三方包 我这里搭建了一个.netcore的webapi项目,引入Consul第三方包,网上可查资料一堆 环境需要kong,konga管理平台,consul 2. 运行程序,注册服务到consul端 找到项目调试debug目的docker网络隔离基于网络命名空间,在物理机上创建docker容器时会为每一个docker容器分配网络命名空间,并且把容器IP桥接到物理机的虚拟网桥上。

none模式:此模式下创建容器是不会为容器配置任何网络参数的,如:容器网卡、IP、通信路由等,全部需要自己去配置。

host模式:此模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机的所有端口与IP,并且这个模式认为是不安全的。

container模式:此模式和host模式很类似,只是此模式创建容器共享的是其他容器的IP和端口而不是物理机,此模式容器自身是不会配置网络和端口,创建此模式容器进去后,你会发现里边的IP是你所指定的那个容器IP并且端口也是共享的,而且其它还是互相隔离的在宿主机上执行ifconfig命令查看机器上的网络设备,可以看到有个docker0的网络接口。Docker守护进程就是通过docker0为docker的容器提供网络连接的各种服务。docker0实际上就是linux的虚拟网桥。什么是网桥呢,根据OSI七层网络模型,网桥是数据链路层的一种设备,用来通过MAC地址(网络的物理地址)来对网络进行划分,在不同的网络之间,进行传递数据。

Linux的网桥有些特点:可以设置ip地址,按道理,ip地址不应该出现在二层设备上,但是Linux中的虚拟网桥,是通用网络设备抽象的一种,只要是网络设备,就能够设定ip地址。当虚拟网桥拥有ip后,linux便可以通过路由表,或者IP表规则,网络层定位网桥,这就相当于拥有了一个隐藏的虚拟网卡,而这个网卡的名字就是虚拟网桥的名字,也就是我们看到的docker0。可以看到docker0有了一个接口“vethda1c8d9”,这个就是在容器创建时,为容器连接docker0所创建的一个网络接口,同样通过ifconfig命令也可以查看到这个网络接口。

当docker0所提供的默认ip地址不能满足我们期望给容器所分配的地址时,我们可以通过linux自带的ifconfig命令修改ip的地址,将其改为我们希望使用的网段。

sudo ifconfig docker0 192.168.200.1 netmask 255.255.0.0

sodo service docker restart

在docker重启完成后,重新运行一个ubuntu的容器,然后查看容器的ip,我们可以看到,ip地址被重新分配为与docker0处于同一个网段。

使用自定义虚拟网桥方法:

容器间的互联

在同宿主机下,docker的容器是通过虚拟网桥来进行连接的,在默认情况下,在同一宿主机下运行的容器都是可以互相连接的,docker提供了一个容器间是否允许连接的选项:“-icc=true”代表这docker允许容器的互相连接。

有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡.这里介绍几种方式在linux服务器上添加虚拟网卡. 我们向eth0中添加一块虚拟网卡: 第一种方法:快递创建删除虚拟网卡 sudo ifconfig eth0:0 192.168.10.10 up 以上的命令就可以在eth0网卡上创建一个叫eth0:0的虚拟网卡,他的地址是:192.168.1.63 如果不想要这个虚拟网卡了,可以使用如下命令删除: sudo ifconfig eth0:0 down 重启服务器或者网络后,虚拟网卡就没有了. hzhsan:但是发现添加的虚拟网卡和原网卡物理地址是一样的。 第二种方法:修改网卡配置文件 在ubuntu下,网卡的配置文件是/etc/network/interfaces,所以我们修改它: sudo vim /etc/network/interfaces 在这个文件中增加如下内容并保存: auto eth0:0 iface eth0:0 inet static address 192.168.10.10 netmask 255.255.255.0 #network 192.168.10.1 #broadcast 192.168.1.255 保存后,我们需要重启网卡(重新加载配置文件)才会生效,使用如下命令重启: sudo /etc/init.d/networking restart 他的优点是重启服务器或者网卡配置不会丢失。 在linux中虚拟网卡的方法 第三种方法:创建tap 前两种方法都有一个特点,创建的网卡可有不同的ip地址,但是Mac地址相同。无法用来创建虚拟机。 添加虚拟网卡tap tunctl -b 附上相关命令简介: 显示网桥信息 brctl show 添加网桥 brctl addbr virbr0 激活网桥 ip link set virbr0 up 添加虚拟网卡tap tunctl -b tap0 ------->执行上面使命就会生成一个tap,后缀从0,1,2依次递增 激活创建的tap ip link set tap0 up 将tap0虚拟网卡添加到指定网桥上。 brctl addif br0 tap0 给网桥配制ip地址 ifconfig virbr1 169.254.251.4 up 将virbr1网桥上绑定的网卡eth5解除 brctl delif virb1 eth5 给virbr1网桥添加网卡eth6 brctl addif virbr1 eth6

使用桥接上网的话需要配置linux系统的IP,具体步骤如下:

1,在命令行模式下或者桌面上进入终端模式,找到/etc/sysconfig/network-script/ifcfg-eth0文件;

2,使用vi打开文件 vi ifcfg-eth0,注意,有的linux系统这个文件可能不带ifcfg前缀。

3,需要改动的:

BOOTPROTO=static

#默认是dhcp,自动获取,自动获取需要将网络模式改桥接模式

需要增加的:

IPADDR=192.168.1.10 #地址是自己设置的

NETMASK=255.255.255.0

修改好之后保存退出。

这样linux可以上网了。

4,如果想要使电脑和linux在同一局域网下,方面2台机器之间互连的话。还需要配置电脑的ip,

打开网络和共享中心->打开适配器设置->可以看到有1个vmware的网络(有的可能是2个),右键第一个属性,打开TCP/IPv4的属性设置,将ip地址设置成192.168.1.20。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8344935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存