docker 报错 non-overlapping IPv4 address pool among the defaults to assign to the network 解决方法

文章讲述了当Docker超过默认30个自定义bridge网络限制时,出现的错误以及三种解决方法:删除未使用的网络、修改docker-compose.yml文件指定网络配置或修改dockerdaemon.json的默认地址池。最后一种方法是一劳永逸的解决方案。
摘要由CSDN通过智能技术生成

错误现象

docker-compose up 报错

Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network

错误原因

Docker默认支持30个不同的自定义bridge网络,如果超过这个限制,就会提示上面的错误

使用命令 docker network ls 来查看创建的网络

其中 bridge、host、none,是docker默认网络 且不能删除

统计数量:

[root@localhost test]# docker network ls | wc -l
33

除去 标题栏 和 默认的 host、none 正好有30个bridge网络,印证了 “Docker默认支持30个不同的自定义bridge网络”

解决方法

方法一 删除没使用的网络

docker network prune

这个方法比较快速的 临时解决问题

方法二 指定网络配置

修改 docker-compose.yml 文件

networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.1.0/24

或者 先创建网络 再指定使用这个网络配置

docker network create docker_compose_network --subnet 172.20.1.0/24
networks:
  default:
    external: 
      name: docker_compose_network 

此方法 需要修改 docker-compose.yml 文件 如果docker-compose.yml文件较多 会比较麻烦

方法三 修改docker默认网络地址(推荐)

在 /etc/docker/daemon.json 追加

{
    ...
    "default-address-pools":[
        {"base":"172.20.0.0/16","size":24},
        {"base":"172.21.0.0/16","size":24},
        {"base":"172.22.0.0/16","size":24},
        {"base":"172.23.0.0/16","size":24}
    ]
}

注意 配置中的 “…” 是配置原本的其他内容,如果没有 /etc/docker/daemon.json 文件则新建 加入 default-address-pools 的配置即可

这个配置将允许Docker分配

172.20.[0-255].0/24
172.21.[0-255].0/24
172.22.[0-255].0/24
172.23.[0-255].0/24

每个网络允许访问256个地址,总共1024个网络。

其中size表示每个容器分配的子网数目,例 {“base”:“172.20.0.0/16”,“size”:29}则表示可分配子网256*32.

加入后需要 删除现有网络占用

docker network prune  

然后重启docker服务

service docker restart

此时再使用 docker-compose up 创建 若干容器后

使用 docker network ls 查看

再统计其数量

[root@localhost test]# docker network ls | wc -l
42

bridge 已经突破了30的默认限制,目前可以有1024个

此方法一劳永逸,不用修改 docker-compose.yml 文件 一次修改docker配置 永久生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值