Docker服务默认创建docker0网桥,它的内核层联通其他的物理或虚拟网卡,从而实现容器和本地主机在同一个物理网络。
Docker默认指定docker0接口的IP地址和子网掩码,还给出MTU(接口允许接收的最大传输单元)。这些值都可以在服务启动时配置
--bip=CIDR
:IP地址与掩码格式,如192.168.1.5/24--mtu=BYTES
:覆盖默认的Docker mtu
或者是在/etc/default/docker
配置DOCKER_OPTS
由于docker网桥是Linux网桥,因此可以
$ sudo brctl show
当创建新的容器时,Docker从可用地址段选择空闲IP地址分配给容器的eth0,并使用宿主机docker0接口的IP作为所有容器的默认网关。目前,Docker不支持在启动容器时指定IP地址。
Linux网桥可以很容易替换为OpenvSwitch等功能强大的网桥实现,支持VLan等属性
自定义网桥
用户可以指定网桥来连接各个容器。在启动Docker服务时,使用-b BRIDGE
或--bridge=BRIDGE
指定网桥。
如果服务已经运行,需要先停止服务,并删除旧的网桥
$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo brtcl delbr docker0
创建网桥bridge0
$ sudo brictl addbr birdge0
$ sudo ip addr add 192.168.5.1/24 dev bridge0
$ sudo ip link set dev bridge0 up
确认网桥创建并启动
$ ip addr show bridge0
配置Docker服务,默认桥接到创建的网桥
$ echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
$ sudo service docker start