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

Docker Swarm指定default-addr-pool-mask-length不生效 如何增大服务地址池

Docker Swarm调整默认地址池子网大小方案

问题原因

--default-addr-pool-mask-length参数必须配合--default-addr-pool自定义地址池参数一起使用才会生效,单独指定子网掩码长度不会覆盖Docker Swarm默认的10.0.0.0/8地址池+24位子网的默认配置。

解决方法

方案1:新集群直接重新初始化(推荐)

如果你的集群还未上线,可直接重建集群:

  1. 管理节点执行命令解散现有Swarm集群,操作前请备份所有服务、数据配置:
docker swarm leave --force
  1. 初始化时同时指定地址池和子网掩码长度,示例如下:
docker swarm init --default-addr-pool 10.0.0.0/8 --default-addr-pool-mask-length 16 --advertise-addr 10.242.233.175:2377
  1. 初始化完成后执行docker info即可看到Swarm段的SubnetSize已调整为16。

方案2:现有已上线集群修改配置

如果集群无法直接重建,可修改Swarm内置配置:

  1. 导出当前Swarm集群配置:
docker config inspect --format '{{ json .Spec }}' docker/swarm/swarm_config > swarm_config.json
  1. 编辑swarm_config.json文件,找到DefaultAddrPool和SubnetSize字段,修改为预期配置,示例:
{
  "DefaultAddrPool": ["10.0.0.0/8"],
  "SubnetSize": 16
  // 其余原有配置保持不变
}
  1. 提交更新Swarm配置:
docker config update docker/swarm/swarm_config --input swarm_config.json
  1. 重启所有管理节点的Docker daemon使配置生效:
systemctl restart docker

注意:该配置仅对修改后新创建的overlay网络生效,已存在的overlay网络不会自动调整子网,如需适配需要手动重建旧网络。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:11