在同一套环境中跑了很多个项目都是用 docker-compose的方式启动的,导致创建的自定义网络过多出现下面的报错

ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network

这是因为 Docker 默认支持 30 个不同的自定义 bridge 网络,如果超过这个限制,就会提示上面的错误。你可以使用命令 docker network ls 来查看你创建的网络,然后通过命令 docker network prune 来移除没有使用的网络。

这里就有可能有小伙伴说到了,网络都在使用,没有可移除的怎么办呢?所以我们可以采取以下方法,创建自定义网络,将我们的程序都加入到创建的这个网络里面。

创建建一个网络:
docker network create networkName

将容器连到创建的网络中(每个容器都要连到这个网络里):
docker network connect networkName containerName

查看网络内的容器信息:
docker network inspect networkName

使用docker network --help 获取更多相关操作详情。

可以在运行容器时直接指定连接network:
docker run --network networkName imageName

然后我们需要在docker-compose启动文件里加入相关配置,指定运行的网络(如下图所示,networks部分)。

networks:
  default:
    external:
      name: networkName 

之后我们就可以正常启动了。

更多推荐

docker出现 could not find an available, non-overlapping IPv4...错误解决方案。