docker如何添加自定义网卡?手把手教你创建br0网桥
作者:丛娟
想知道docker引擎默认网卡docker0如何替换为自定义网桥吗?本文详细讲解如何通过ifconfig创建虚拟网卡br0,修改docker.service文件添加-br0参数,让新启动的容器使用自定义网段,轻松实现容器网络隔离
docker 引擎的默认网卡是docker0,当systemctl start docker 启动容器server时默认会生成一个网段为172.17.10.1/24 的网卡设备
docker0既是一个虚拟网卡、又是一个虚拟交换机
- 网卡:实现了它跟宿主机的通信
- 虚拟交换机:将它的网关加到容器中,使容器与容器之间,容器与外网可以通信

图中最下面的 eth0为本机的外网网卡设备
如何新增一个自定义的网卡?
1、获取本机的网卡 ifconfig

2、手动创建一个虚拟网卡(网桥)
cd /etc/sysconfig/network-scripts cp ifcfg-ens33 ifcfg-br0 [root@node2 network-scripts]# vi ifcfg-br0 TYPE=“bridge” BRIDGE=“br0” BOOTPROTO=static DEFROUTE=yes NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=192.168.10.135 GATEWAY=192.168.10.2 NETMASK=255.255.255.0 DNS1=8.8.8.8
3、启动新的网卡(网桥)
ifconfig br0 up
4、修改docker.service 文件
增加-b br0 的参数
[root@node2 network-scripts]# vi /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd-current -b br0
这样指定启动服务时的网卡为br0
5、使参数生效
systemctl daemon-reload systemctl restart docker
6、查看网络,br0生效了
[root@node2 ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
ether 76:3e:f8:46:5e:e1 txqueuelen 1000 (Ethernet)
RX packets 16 bytes 1088 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.10.1 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::42:4aff:fe6b:8061 prefixlen 64 scopeid 0x20<link>
ether 02:42:4a:6b:80:61 txqueuelen 0 (Ethernet)
RX packets 24 bytes 1632 (1.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 656 (656.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.135 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::9b50:e592:a2e1:5127 prefixlen 64 scopeid 0x20<link>
ether 00:50:56:26:02:e6 txqueuelen 1000 (Ethernet)
RX packets 862 bytes 69807 (68.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
7、新启动一个容器
[root@node2 ~]# docker run -itd --name=nginx4 192.168.10.135:5000/nginx:v1 8bb095b460888d2519101bdcb7b47a617a55682b6d97ab4529c1cdbf8d458532
查看该容器的ip是br0 网卡的网段:
[root@node2 docker-static-ip]# docker inspect nginx4|grep -i ipa
"SecondaryIPAddresses": null,
"IPAddress": "172.18.0.3"
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
