使用Docker Compose创建bridge网络时遇“plugin bridge not found”错误求助
Docker网络创建故障分析与解决
故障信息
- 系统环境:Ubuntu 20.04,Docker版本20.10.17(build 100c701)
- 报错内容:
Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network - 涉及的
docker-compose.yml配置:
version: "3.8" services: db : build : ./database/ ports : - 5432:5432 volumes: - ./database/create_fixtures.sql:/docker-entrypoint-initdb.d/create_fixtures.sql networks: network: ipv4_address : 172.20.0.3 pgadmin: image: dpage/pgadmin4 environment: - PGADMIN_DEFAULT_EMAIL=admin@admin.com - PGADMIN_DEFAULT_PASSWORD=root ports: - "5050:80" networks: network: ipv4_address : 172.20.0.2 app : build: ./app/ networks: network: depends_on : - db networks: network: ipam: driver: bridge config: - subnet : "172.20.0.0/16" gateway: "172.20.0.1"
已尝试的无效操作
- 重启Docker服务及电脑
- 检查Docker网络插件(确认bridge插件正常)
- 验证
/etc/docker/daemon.json文件(文件不存在)
故障原因分析
这个报错的核心是你指定的子网172.20.0.0/16与Docker默认的网络地址池、或系统中已存在的其他网络(如VPN、虚拟机网络)发生了重叠,导致Docker无法分配不冲突的网络段。
解决方案
1. 检查并清理冲突的Docker网络
执行以下命令查看所有Docker网络:
docker network ls
对每个网络执行检查,确认是否占用172.20.0.0/16范围:
docker inspect <NETWORK_ID>
找到冲突的网络后,删除不再使用的网络:
docker network rm <NETWORK_ID>
2. 修改docker-compose.yml中的子网配置
将指定的子网换成不冲突的网段,比如缩小子网范围或更换基础网段:
networks: network: ipam: driver: bridge config: - subnet : "172.30.1.0/24" # 更换为不冲突的子网 gateway: "172.30.1.1"
同时对应修改services中的ipv4_address,比如172.30.1.2、172.30.1.3。
3. 配置Docker默认地址池避免全局冲突
如果频繁出现这类问题,可创建/etc/docker/daemon.json文件,指定Docker默认使用的地址池,避免与自定义子网冲突:
{ "default-address-pools": [ {"base": "172.31.0.0/16", "size": 24} ] }
保存文件后重启Docker服务:
sudo systemctl restart docker
4. 检查系统其他网络占用
执行以下命令查看系统中所有网络接口的IP段,确认是否有其他服务(如VPN、VirtualBox等)占用172.20.0.0/16:
ip addr
如果发现冲突,停止对应的服务或调整其网络配置。
内容的提问来源于stack exchange,提问作者Flâyn
相关产品推荐
相关产品推荐

