touch /etc/sysconfig/network-scripts/ifcfg-br0
建立网桥配置文件ifcfg-br0
vi /etc/sysconfig/network-scripts/ifcfg-br0
2、添加网卡到网桥
把eth0和eth1两网卡添加到网桥中。
修改eth1网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改eth2网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth2
3. 重启网络服务
service network restart
bridge 桥接网络 默认网络类型,容器内不特殊指定,就用此类型。不特殊指定的话,分配的ip为172.17.0.xnone 无指定网络 容器内不指定局域网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允许容器的互相连接。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)