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

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

我正在尝试 运行 docker-compose up -d 跟随 docker-compose.yml 文件

version: '2'

services:
    php7-cli:
        build: php7-cli
        image: php7-cli
        tty: true
        volumes:
            - ../:/var/www/app
        networks:
            - my-network
networks:
    my-network:
        driver: bridge

docker-compose build 构建成功,但如果我尝试 docker-compose up,我收到以下错误消息:

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

当我尝试 docker network ls 时,我得到了

NETWORK ID          NAME                DRIVER              SCOPE
7c8a6c131c1b        bridge              bridge              local
9f16d3a33b4e        host                host                local
24c54a4323ed        none                null                local

我试图通过 docker network prune 删除孤立网络,但没有一个网络已被删除。

然后我尝试手动删除 bridge 网络 docker network rm 7c8a6c131c1b

但我遇到了这个错误

Error response from daemon: bridge is a pre-defined network and cannot be removed

这是我的 docker version

docker version
Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:17:20 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:15:30 2018
  OS/Arch:      linux/amd64
  Experimental: false

将网络接口从 ens33 重命名为 eth0 后,同样的问题消失了。 使用的指南是 https://www.itzgeek.com/how-tos/mini-howtos/change-default-network-name-ens33-to-old-eth0-on-ubuntu-16-04.html

尝试ifconfig

如果网络接口太多,那么您之前可能无法正确停止docker。当您的机器达到其最大网络接口数时,docker-compose 在这种情况下无法升级(docker-compose up 无法创建新网络)。

docker-compose为例。 每次我们 运行 docker-compose up,我们都会创建一个网络接口,当我们 运行 docker-compose down 时,应该删除这个接口。 docker-compose down 停止容器并删除由 up 创建的容器、网络、卷和图像。

解决方法:重启

YOU MUST DELETE THE bridge NETWORKS YOU DON'T USE!!!

列出 docker 个网络

  • 寻找与您不再使用的项目相关的桥梁
    • 这些是在 运行 docker-在多个目录中编写应用程序时创建的
$ docker network ls
NETWORK ID     NAME                                        DRIVER    SCOPE
070b2051c2d6   altacv_default                              bridge    local
90269e56ef9c   arquitecture_default                        bridge    local
f04c85b27605   awesome-cv-docker_default                   bridge    local
cfdc24506a32   aws-s3-bucket-state_default                 bridge    local
51b7b53697cc   bridge                                      bridge    local
e4f4800f11bf   certs-resource_default                      bridge    local
7d760fc8a8c3   cloner_default                              bridge    local
4a161fb223cc   coverletter_default                         bridge    local
d16029047f65   distance-matrix-service_default             bridge    local
9e944ddd5da0   docker-compose-deployer_default             bridge    local
fb25db546e14   docker-compose-deployment_default           bridge    local
150cd02ad55c   docker-neo4j_default                        bridge    local
c76d6167e7b1   docker-pycobertura_default                  bridge    local

删除你不用的

  • 只需删除您不再需要的每个 ID...
$ docker network rm 655b6657b925 644fecac3549 6fac6fd59fe8 3d03a7df183d 40d112093fc7 32de1ea6549d 5cdd12695a4d 1e30562c7f63 58b1f6343780 e7bbf7af6dbb 4a161fb223cc 070b2051c2d6 90269e56ef9c
655b6657b925
Error response from daemon: error while removing network: network tools_supercash-data id 644fecac3549735341a482ddf330918a2050bc6ee2bcd4123d208051c836f9eb has active endpoints
6fac6fd59fe8
3d03a7df183d
40d112093fc7
...
...
...

利润

  • Docker-compose 现在可以正常工作了...
docker-compose up 

...
...