Сбой конкретен: Docker не находит приемлемую автоматическую подсеть для новой мостовой сети. Это не означает, что у машины закончились адреса, и не означает, что VPN сломан. Диагноз определяют два вопроса: какие блоки-кандидаты видит демон и какие из них его распределитель исключает в этой среде. Пройдите их именно в таком порядке, потому что второй вопрос бессмысленен, пока не получен ответ на первый.

Подтвердите, что именно сломалось, прежде чем что-то менять

Выполните приведённые ниже шаги на хосте, который запускает демон. Оболочка, разговаривающая с удалённым контекстом, описывает другую машину, и одна эта ошибка может стоить часа.

Одновременно запишите версию Engine в заявку. Каждая эвристика в остальной части этого руководства привязана к версии, а утверждение без версии — это слух.

Подсчитайте выделения, которые у вас уже есть

Перечислите сети, затем проверьте те, что важны: docker network ls, а за ним docker network inspect NETWORK_NAME. Прочитайте их подсети IPAM и подключённые к каждой контейнеры. Несколько проектов Compose расходуют больше блоков, чем можно предположить по числу их контейнеров, потому что каждый проект склонен создавать собственную сеть по умолчанию. Остановленный контейнер не освобождает выделение своей сети.

Проверьте и конфигурацию пула, поскольку у пула по умолчанию есть базовый диапазон и размер префикса для каждой сети. Большие выделения на сеть быстрее исчерпывают доступные блоки, и это факт ёмкости, а не проблема маршрутизации.

Запишите число. Именно оно служит базовой линией, показывающей, помогло ли следующее изменение.

Сравните, как демон видит маршруты

VPN может влиять на выбор кандидатов, но конкретная реализация решает как. В Moby 28.2.2 на Linux InferReservedNetworks собирает адреса серверов имён и некоторые on-link маршруты IPv4 и не просто резервирует каждый маршрут из каждой таблицы. Собранные маршруты связи также исключают неуказанный адрес назначения, поэтому один маршрут 0.0.0.0/1 сам по себе не резервирует все адреса. Другой широкий on-link префикс, например 128.0.0.0/1, может пересечься со знакомыми диапазонами кандидатов 172 и 192.

Сравните ip -4 route show table all до и после подключения VPN на хосте демона. Разница — это доказательство, а версия — границы утверждения.

Не переносите эвристику одного выпуска на все выпуски. Именно так ответ с форума превращается в изменение политики.

Выберите наименьшее исправление, которое работает

Если подтверждённая неиспользуемая сеть держит нужный вам блок, планируйте её целенаправленный вывод вместе с владельцем, а не широкую обрезку. Для новой сети явно проверенная неиспользуемая подсеть полностью избавляет от зависимости от автоматического выбора. Эта подсеть всё равно должна избегать реальных назначений Docker, LAN и обязательных VPN, потому что частный не значит безопасный. Маршрутизация реального удалённого префикса обменяла бы ошибку выделения на сломанный доступ.

Изменение default-address-pools — это более широкая политика в отношении будущих выделений. Выберите неконфликтующую базу и подходящий выделенный размер, объедините его с существующими настройками демона и спланируйте документированное влияние перезапуска. Существующие сети не перенумеровываются молча.

Не отключайте рассылку корпоративных маршрутов, чтобы выделение удалось. Явный план адресов обычно решает локальную проблему, не ослабляя обязательную политику.

Принимайте выделение и маршрутизацию отдельно

После изменения проверьте подсеть, которую Docker действительно создал, и протестируйте зависимости приложения от VPN и локальных ресурсов. Успешное выделение и правильная маршрутизация во время работы — две разные проверки приёмки, и прохождение первой не является доказательством второй. Если приложение не может добраться до ресурса за туннелем, у вас проблема маршрутизации, которую скрывала ошибка пула. Запишите оба результата в заявку.

Храните разницу маршрутов и число пула вместе с записью об изменении, потому что следующее обновление VPN-клиента может изменить первое, не затрагивая Docker.

Руководство завершено, когда кто-то другой может повторить эти две проверки и получить тот же ответ.

Похожие статьи