容器网桥

2020-08-24  本文已影响0人  欧耶90
  1. 默认网桥
    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 
  1. 自定义网桥
    除了使用默认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
  1. 使用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

上一篇下一篇

猜你喜欢

热点阅读