Генератор подсетей демона Docker
Создавайте настройки daemon.json, управляющие подсетями, которые использует Docker: default-address-pools и адресом моста docker0 (bip). Узнайте, сколько сетей помещается в указанные диапазоны, и проверьте наличие конфликтов.
Ввод
Вывод
Документация
Что такое пулы адресов Docker?
Каждая сеть Docker получает собственный диапазон IP-адресов, называемый подсетью. Когда вы создаёте сеть, не выбирая подсеть, Docker берёт её из встроенного списка пулов адресов, который начинается с 172.17.0.0/16 и продолжается диапазонами до 172.31.0.0/16 и 192.168.0.0/16. Это работает до тех пор, пока выбранный диапазон не конфликтует с чем-либо ещё, например с VPN, офисной сетью или базой данных, размещённой по фиксированному адресу. Чтобы исправить это сразу для всех сетей, измените пулы адресов в настройках демона Docker.
Описание инструмента
Этот инструмент создаёт настройки daemon.json, определяющие, какие подсети использует Docker. Введите один или несколько диапазонов пулов адресов и размер каждой сети, чтобы получить настройку default-address-pools. Также можно задать адрес моста docker0 по умолчанию с помощью bip. Инструмент показывает, сколько сетей помещается в ваших пулах и сколько хостов содержит каждая сеть, проверяет введённые данные по мере ввода и отмечает диапазоны, которые, вероятно, приведут к конфликтам. Все вычисления выполняются в вашем браузере.
Примеры
Выделить всем новым сетям подсеть /24 из диапазона 10.10.0.0/16, что позволяет разместить 256 сетей с 254 доступными хостами в каждой:
{
"default-address-pools": [
{
"base": "10.10.0.0/16",
"size": 24
}
]
}Перенести мост по умолчанию в другой диапазон и использовать два пула:
{
"bip": "10.200.0.1/24",
"default-address-pools": [
{
"base": "10.10.0.0/16",
"size": 24
},
{
"base": "10.20.0.0/20",
"size": 24
}
]
}Возможности
- Несколько диапазонов пулов адресов одновременно, по одному в каждой строке
- Размер сетей, которые Docker выделяет из каждого пула
- Необязательный адрес моста
docker0по умолчанию - Отображение количества сетей, помещающихся в пулах, и количества доступных хостов в каждой сети
- Предупреждения о публичных диапазонах, пересекающихся пулах и адресах с установленными битами хоста
- Скачивание результата в виде файла
daemon.json
Как это работает
Диапазон записывается в виде адреса и длины префикса, например 10.10.0.0/16. Префикс указывает, сколько из 32 бит относятся к части сети, а остальные используются для подсчёта хостов. Каждый пул имеет базовый диапазон и размер сети. Docker разделяет базовый диапазон на сети указанного размера и выдаёт их по одной, поэтому базовый диапазон 10.10.0.0/16 с размером 24 даёт 2^(24 − 16) = 256 сетей. Сеть /24 содержит 256 адресов, из которых 254 являются доступными, поскольку первый адрес является адресом сети, а последний — широковещательным адресом. Docker также использует первый доступный адрес в качестве шлюза мостовой сети.
Размер не может быть меньше префикса базового диапазона и ограничен значением /30, поскольку сети необходимы адрес для шлюза и как минимум один контейнер.
Советы
- Выбирайте диапазоны из 10.0.0.0/8 или 172.16.0.0/12, которые не используются вашим VPN и офисной сетью. Диапазоны около 192.168.0.0/16 с наибольшей вероятностью вызовут конфликт, поскольку их используют домашние и офисные маршрутизаторы
- Мост
docker0по умолчанию всегда использует 172.17.0.0/16. Если этот диапазон конфликтует с вашей сетью, задайте дляbipдругой адрес, например 10.200.0.1/24 - Сохраните результат как
/etc/docker/daemon.jsonв Linux или в разделе «Настройки → Docker Engine» в Docker Desktop, а затем перезапустите Docker. Объедините эти настройки с уже имеющимися в файле, не заменяйте их полностью - Изменение
default-address-poolsвлияет только на сети, созданные после этого. Удалите существующие сети и создайте их заново, чтобы переместить их в новый диапазон - Пулы, которые пересекаются друг с другом, сложно анализировать, поэтому держите их раздельно
- Когда появляется сообщение «все предопределённые пулы адресов полностью разбиты на подсети», это означает, что у Docker закончились диапазоны. Добавьте более крупный базовый диапазон или уменьшите размер сети, чтобы получить больше сетей