You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

限制Docker Compose默认桥接网络,避免与物理VLAN网段冲突

问题描述

我的机器连接到物理网络192.168.0.0/24,该网络包含物联网VLAN 107(网段192.168.107.0/24)。操作部分Docker容器后,主机突然无法访问VLAN 107。经排查,docker-compose创建的桥接网段为192.168.96.0/20,该网段包含192.168.107.0/24,导致ip route get 192.168.107.100流量导向桥接设备。执行docker-compose down和docker-compose up后,桥接网络恢复为172.22.0.0/16,访问恢复正常。

咨询问题
  • Docker为何会创建192.168段桥接网络?主机曾创建过超255个桥接网络,但当前数量远低于此。
  • 如何配置Docker,使其尝试创建192.168.*网段桥接网络时直接失败,拒绝创建该网络及相关容器?
解答

1. Docker创建192.168段桥接网络的原因

Docker默认内置了多组私有网段池,除了常见的172.17.0.0/16到172.31.0.0/16这些172段网段,还包含192.168.0.0/20、192.168.16.0/20等多个192.168段的网段。

Docker分配网段时会优先从172段的网段池选未使用的网段,但你之前创建过超255个桥接网络,哪怕现在大部分已删除,Docker的网段分配机制会标记曾经使用过的网段(避免重复分配冲突),当可用的172段网段耗尽后,就会自动切换到192.168段的网段池进行分配,这就是出现192.168.96.0/20网段的原因。

2. 禁止Docker使用192.168.*网段的配置方法

通过修改Docker的daemon配置文件,自定义允许使用的网段池,完全排除192.168段即可:

  1. 编辑(或创建)Docker配置文件:
    sudo nano /etc/docker/daemon.json
    
  2. 添加以下配置内容,指定仅使用你允许的172段私有网段(可根据需求调整具体网段范围):
    {
      "default-address-pools": [
        {"base": "172.17.0.0/16", "size": 24},
        {"base": "172.18.0.0/16", "size": 24},
        {"base": "172.19.0.0/16", "size": 24},
        {"base": "172.20.0.0/16", "size": 24},
        {"base": "172.21.0.0/16", "size": 24},
        {"base": "172.22.0.0/16", "size": 24}
      ]
    }
    
  3. 保存文件后重启Docker服务:
    sudo systemctl restart docker
    

配置完成后,Docker只会从你指定的172段网段池中分配桥接网络,不会再使用192.168段。如果有容器或compose配置尝试指定192.168段的网络,Docker会直接报错并拒绝创建。

内容的提问来源于stack exchange,提问作者lutzky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:42:44