Docker 创建外部连接网络时出错

Docker 创建外部连接网络时出错

我正在尝试按照官方文档中的建议,使用推荐的docker compose配置部署portainer/agent堆栈(https://portainer.readthedocs.io/en/stable/agent.html),并且在除1之外的所有节点上都正确部署并运行。

在发生故障的节点上,我检查错误并显示:

starting container failed: error creating external connectivity network: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network

这很奇怪,因为这是 raspbian 的最新安装。我刚刚使用来自官方 raspberry pi 网站的脚本安装了 docker (https://www.raspberrypi.org/blog/docker-comes-to-raspberry-pi/)。这也是在其他 Raspberry Pi 上设置 docker 的方式(其他 Raspberry Pi 运行良好)。

docker compose文件是:

version: '3.2'

services:
  agent:
    image: portainer/agent
    environment:
      AGENT_CLUSTER_ADDR: tasks.agent
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - target: 9001
        published: 9001
        protocol: tcp
        mode: host
    networks:
      - portainer_agent
    deploy:
      mode: global

networks:
  portainer_agent:
    driver: overlay

答案1

我认为这是一个 Docker 问题,上次遇到此错误时,我不得不重新启动 Docker 主机来修复它并能够创建一个容器。

我使用的是旧版本的 Docker,但可能已经修复了。

答案2

如果您已使用子网空间池中的所有可用网络,就会发生这种情况。对于覆盖网络,您可以使用在 Swarm 部分下看到的--default-addr-pool选项来限制可用的地址池。一旦 docker 分配了该池中的所有子网,您将需要删除网络以释放池中的空间(或者使用更大的池创建您的 swarm,我不知道在创建 swarm 后如何更改此设置)。docker swarm initdocker info

请注意,如果子网可路由,docker 会将其视为分配的网络,因此要警惕 VPN 之类的东西,它会创建包含所有私有网络的大型路由。

相关内容