docker默认网段和宿主机环境冲突时的处理

发布于:2025-03-05 ⋅ 阅读:(26) ⋅ 点赞:(0)

修改 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_gwbridge 默认网段

场景:

docker_gwbridge是Docker内部用来连接容器和宿主网络的一个桥接网络。默认情况下,它的IP地址段是172.18.0.0/16,对吧?可能有时候这个网段和现有的网络冲突了,所以需要改。那么需要怎么修改呢?在网上找了很多方案总是不生效,后面终于找到了一种解决方式,下面总结一下操作步骤:

处理

第一步:修改docker配置文件

在目录 /etc/docker/daemon.json 文件中添加如下内容:

"default-address-pools": [
        {
            "base": "193.168.0.0/16", 
            "size": 24
        }
    ]

Tips:网段后面的数字代表子网掩码中连续1的长度

  • 如:“192.168.5.0/24” 代表的是:“255.255.255.0”
  • 如:“192.168.0.0/16” 代表的是:“255.255.0.0”
  • 如:“192.0.0.0/8” 代表的是:“255.0.0.0”

第二步:停止docker服务

systemctl stop docker

第三步:删除local-kv.db文件

cd /var/lib/docker/network/files/
cp local-kv.db  local-kv.db.bak
rm local-kv.db

Tips: 这一步很重要,如果不执行该步骤可能在第一步中增加的配置不会生效。

第四步: 启动docker 服务

systemctl start docker

验证是否生效:

route -n
Kernel IP routing table
Destination     Gateway          Genmask      Flags   Metric  Ref  Use  Iface
0.0.0.0         172.253.95.254   0.0.0.0       UG     100     0     0   ens192
172.18.0.0      0.0.0.0          255.255.0.0   U      0       0     0   br-59d6d8c036cd
172.253.92.0    0.0.0.0          255.255.252.0 U      100     0     0   ens192
192.168.100.0   0.0.0.0          255.255.255.0 U      0       0     0   docker0
193.168.0.0     0.0.0.0          255.255.255.0 U      0       0     0   docker_gwbridge

可以看到,docker_gwbridge的网段已经更改过来了。


网站公告

今日签到

点亮在社区的每一天
去签到