容器网桥
2020-08-24 本文已影响0人
欧耶90
- 默认网桥
Docker服务启动时默认创建了docker0网桥,并指定了docker0接口的ip和子网掩码,让主机和容器之间可以通过网桥通信,还默认设置了MTU(接口运行接收的最大传输单元),默认为1500B,可以在配置文件中配置DOCKER_OPTS,然后重启服务,因为Docker网桥是Linux网桥,用户可以使用brctl show来查看网桥和端口的连接信息:
# 安装brctl
apt install bridge-utils -y
# 查看网桥信息
➜ ~ brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.0242184dc7a8 no vethaf68b69
每次创建新容器时,Docker从可用的地址空间中选择一个ip给容器的eth0接口,并使用宿主机docker0接口的ip地址作为默认网关:
➜ ~ docker run -it --rm ubuntu:china bash
root@a9950c30b178:/# ip addr show eth0
23: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
root@a9950c30b178:/# ip route
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.3
- 自定义网桥
除了使用默认docker0网桥,用户还可以自定义网桥让各个容器来连接使用,可以使用-b 或--bridge指定网桥
停止Docker服务,删除旧网桥
[root@test01 ~]# service docker stop
Redirecting to /bin/systemctl stop docker.service
# 停止docker0网桥运行
[root@test01 ~]# ip link set dev docker0 down
# 删除docker0网桥
[root@test01 ~]# brctl delbr docker0
创建一个网桥bridge0:
brctl addbr bridge0
ip addr add 172.17.0.1/24 dev bridge0
ip link set dev bridge0 up
查看网桥并启动:
ip addr show bridge0
配置Docker服务使用自定义网桥:
echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
sudo service docker start
- 使用OpenvSwitch网桥
环境:Ubuntu.18
安装OpenvSwitch
➜ ~ apt install openvswitch-switch -y
添加一个网桥br0并查看:
➜ ~ ovs-vsctl add-br br0
➜ ~ ovs-vsctl show
f4b805d4-f4c8-49d8-a3a6-484b46e7f37e
Bridge br0
Port br0
Interface br0
type: internal
ovs_version: "2.13.0"
配置容器连接到OpenvSwitch网桥
- 创建无网口容器
bash docker run --net=none --privileged=true -it ubuntu:china bash