я пытаюсь развернуть стек 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 ( https: //www.raspberrypi. org / blog / docker-come-to-raspberry-pi / ). именно так docker был настроен и на других raspberry pi (другие raspberry pi работают нормально).
файл компоновки docker:
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
Я думаю, что это проблема Docker. В прошлый раз, когда я столкнулся с этой ошибкой, мне пришлось перезагрузить хост Docker, чтобы исправить это и быть возможность создать контейнер.
Я использовал старую версию Docker, которая с тех пор могла быть исправлена.
Это произойдет, если вы использовали все доступные сети в вашем пуле пространств подсетей. Для оверлейных сетей вы можете ограничить доступные пулы адресов с помощью опции --default-addr-pool
на docker swarm init
, которую вы увидите в разделе Swarm docker info
. Как только docker выделит все подсети из этого пула, вам нужно будет удалить сети, чтобы освободить место в пуле (или создать свой рой с большим пулом, я не знаю, как изменить этот параметр после создание роя).
Обратите внимание, что если подсеть является маршрутизируемой, Docker будет рассматривать ее как выделенную сеть, поэтому остерегайтесь таких вещей, как VPN, которые создают большой маршрут, включающий все частные сети.