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

Docker创建新网络时未使用指定IP池的问题问询

解决Docker自定义网络不使用指定IP池的问题

哈哈,这个坑我刚踩过没多久!问题出在你对bip和fixed-cidr的作用范围理解上——这俩配置只对Docker的**默认桥接网络(docker0)**生效,你手动创建的自定义网络根本不会读这个配置,自然不会用你指定的IP池。下面给你两种针对性的解决办法:

1. 手动给自定义网络指定子网

如果只是偶尔创建自定义网络,直接在创建时显式指定子网范围就行,命令格式如下:

docker network create --subnet=192.168.89.0/24 --gateway=192.168.89.1 my-custom-network

这样新创建的my-custom-network就会严格使用你指定的192.168.89.0/24子网,容器IP也会从这个范围分配。

2. 配置全局默认地址池(推荐)

如果不想每次创建自定义网络都手动敲子网参数,可以修改daemon.json添加default-address-pools配置,让所有新创建的自定义桥接网络自动从你指定的大子网里划分IP段。修改后的配置如下:

{
  "bip": "192.168.89.1/22",
  "fixed-cidr": "192.168.89.2/24",
  "default-address-pools": [
    {
      "base": "192.168.89.0/22",
      "size": 24
    }
  ]
}
  • base:指定你预留的整个大子网范围,和bip的网段保持一致避免冲突
  • size:指定每个自定义网络自动划分的子网掩码长度(这里是/24,也就是每个子网有254个可用IP)

修改完后记得重启Docker daemon让配置生效:

systemctl restart docker

关键注意事项

  • 已经创建好的自定义网络不会自动更新配置,需要先删除(docker network rm <网络名>)再重新创建才能用上新的默认地址池
  • fixed-cidr的作用仅仅是限制**默认桥接网络(docker0)**里的容器IP范围,自定义网络完全不受这个参数影响,这是很多新手容易混淆的点

验证配置是否生效

  1. 检查docker0网桥的IP是否符合bip配置:
ip addr show docker0
  1. 创建一个新的自定义网络,然后查看它的子网配置:
docker network create test-net
docker network inspect test-net | grep Subnet

输出应该显示子网在192.168.89.0/22范围内的某个/24网段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:12:26