# 修改 docker0 默认网段

场景:在某些云环境中(如公司机房的私有云),172.17.0.0/16 这个网段已被云中的网络设备使用,在这种环境下,docker0 不能正常打开,这时候需要修改它的网段。或者 docker0 创建后,占用的 172.17.0.0/16 这个网段导致客户云环境的其他功能出现异常,这种场景下也需要修改 docker0 的网段。

处理: 一种是在目录 /etc/docker/ 下创建 daemon.json 文件,在文件内容为:

{
  "bip": "172.23.248.0/21"
}

另一种:有数的 docker 安装脚本也提供修改 docker0 网桥 ip 段的功能,运行脚本:bash docker_install.centos.sh fix,脚本会把 ip 段更改为 172.23.248.0/21。

修改 docker_gwbridge 默认网段

场景:docker_gwbridge 的默认子网网段是 172.20.0.0/16,和 docker0 一样,也有可能和客户的网络设备冲突,这需要修改 docker_gwbridge 的默认网段。

处理:

如果节点已经加入 swarm 集群,首先离开集群:docker swarm leave --force

停止 docker 服务:sudo systemctl stop docker

删除 docker_gwbridge 网桥

sudo ip link set docker_gwbridge down

sudo ip link del dev docker_gwbridge

重启 docker 服务: sudo systemctl start docker

删除 docker_gwbridge 网络: docker network rm docker_gwbridge

重新创建 docker_gwbridge 网络

docker network create \
  --subnet 172.24.248.0/21 \
  --opt com.docker.network.bridge.name=docker_gwbridge \
  --opt com.docker.network.bridge.enable_icc=false \
  --opt com.docker.network.bridge.enable_ip_masquerade=true \
  --opt com.docker.network.driver.mtu=1500 \
  docker_gwbridge

其中 172.24.248.0/21 为修改后的子网段,这是建议值,如果有需要,可改为其他符合客户环境的值。 注意:双机部署中,上述步骤需要在两个节点上都执行。