Это в конечном итоге выдаст ошибку
Ответ об ошибке от демона: не удалось найти доступный, непересекающийся пул адресов IPv4 среди значений по умолчанию для назначения сети
Но мне пришлось провести эксперимент, чтобы вызвать это; Я никогда не сталкивался с этой проблемой в дикой природе.
Вот эксперимент:
#!/bin/sh
n=32
for i in $(seq "$n"); do
docker network create "n$i" >/dev/null
done
for i in $(seq "$n"); do
docker network inspect "n$i" --format '{{ .Name }}: {{ .IPAM.Config }}'
done
for i in $(seq "$n"); do
docker network rm "n$i" >/dev/null
done
Я запускаю это на Docker Desktop для Mac. В настройках кита сетевым адресом по умолчанию является 192.168.65.0/24. Вроде бы выделил, по порядку:
- Шестнадцать сетей с 172.16.0.0/16 по 172.31.0.0/16; затем
- Шестнадцать сетей с 192.168.0.0/20 по 192.168.224.0/20
Когда я действительно запустил его, он пропустил 192.168.64.0/28 (который имеет сеть по умолчанию), а также 192.168.192.0/28 и 192.168.224.0/28; непонятно почему. Он не пропустил 192.168.0.0/28, хотя моя локальная сеть хоста 192.168.1.0/24.
Похоже, что docker network create имеет возможность указать --subnet
в формате CIDR, но, похоже, нет возможности указать размер блока без выбора конкретного диапазона адресов. , Например, вы можете создать / 20 сетей в диапазоне 172.16.0.0/12, чтобы иметь более мелкие сети, но вам придется распределять диапазоны IP-адресов вручную.
На практике ни программы, ни циклы администратора не являются бесплатными: существует ограничение на количество контейнеров, которые вы, как оператор, можете разместить в локальной системе и в которых можете управлять. Для меня одновременное использование до четырех стеков Docker Compose довольно необычно, и наиболее сложные сетевые настройки Docker Compose, похоже, используют сеть по умолчанию плюс еще два; объединяя их, можно объединить только 12 сетей, когда будет около 20 или около того.
Если вам действительно нужно запускать или управлять большим количеством контейнеров, система, подобная Kubernetes, упростит управление, но Kubernetes также поставляется с другой (и сложной) сетевой системой, которая не сталкивается с этим конкретным ограничением. , Если это действительно ваша самая большая проблема, это место, где есть существенная разница между разными оркестровщиками контейнеров