跳转至

如何更改 Docker 网桥默认的网段地址?


2019-05-07 by dongnan

环境

软件 版本
Ubuntu Server 16.04 amd64
docker-ce 18.09.5

目标

调整 Docker 网桥(Docker0) 默认的网段地址,网络掩码由 172.17.0.1/16 更改为 172.17.0.1/24

Docker 网络原理

当Docker 启动时, 会自动在主机上创建一个 docker0虚拟网桥, 实际上是Linux操作系统中的一个 bridge, 可以理解为一个软件交换机

它会在挂载到它的网口之间进行转发。同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0接口。

比如典型的 172.17.0.1,掩码为 255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。

当创建一个 Docker 容器的时候, 同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。

这对接口一端在容器内即eth0,另一端在本地并被挂载到 docker0 网桥 名称以 veth开头(例如 vethAQI2QT)。 通过这种方式主机可以跟容器通信,容器之间也可以相互通信。Docker就创建了在主机和所有容器之间一个虚拟共享网络

网桥

brctl show

bridge name    bridge id        STP enabled    interfaces
docker0        8000.0242d7d882a0    no

网段

ip addr show docker0

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:d7:d8:82:a0 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever

步骤

  • 编辑配置文件
# 如果不存在则创建
vim /etc/docker/daemon.json
  • 确保有 bip 选项
{
    "bip": "172.17.0.1/24"
}
  • 重启 docker 服务
systemctl restart docker.service

验证

ip addr show docker0

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:2e:54:d3:48 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/24 brd 172.17.0.255 scope global docker0
valid_lft forever preferred_lft forever

参考

docker-doc

回到页面顶部