Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
DOCKER_NETWORK_CONFLICT Linux / DevOps

Траблшутинг сетей Docker: bridge, host, macvlan, overlay и устранение конфликтов IP

Обновлено: 21.08.2026
  • Контейнеры не могут взаимодействовать по внутренней сети или пинговать внешний шлюз.
  • Конфликт IP-адресов подсети Docker (по умолчанию 172.17.0.0/16) с корпоративной сетью или VPN.
  • Ошибка driver failed programming external connectivity on endpoint.
  • Сбои обнаружения сервисов (Service Discovery) в Swarm/Overlay сетях.

1. Диагностика существующих сетей

docker network ls
docker network inspect bridge

2. Устранение пересечений подсетей пула по умолчанию

Задайте неконфликтующие пулы в /etc/docker/daemon.json:

{
  "bip": "10.200.0.1/24",
  "default-address-pools": [
    {"base": "10.201.0.0/16", "size": 24}
  ]
}
systemctl restart docker

3. Создание изолированной пользовательской Bridge-сети

docker network create --driver bridge --subnet 10.20.30.0/24 --gateway 10.20.30.1 custom_bridge
docker run -d --name web --network custom_bridge nginx

4. Настройка Macvlan для прямого подключения к физической сети

docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 direct_lan
Практический опыт инженера: Если после обновления Docker пропадает связь между контейнерами, проверьте политику цепочки FORWARD в iptables: выполните iptables -P FORWARD ACCEPT или настройте правила в DOCKER-USER.

Частые вопросы (FAQ)

Почему контейнеры в стандартной сети bridge не резолвят друг друга по имени?

Встроенный DNS-сервер Docker (127.0.0.11) работает только в пользовательских (user-defined) сетях bridge. В сети bridge по умолчанию резолвинг имен отключен разработчиками Docker.

Почему хост не может связаться с контейнером в сети macvlan?

Это ограничение безопасности ядра Linux: трафик между родительским интерфейсом хоста и macvlan-подинтерфейсами изолирован. Для связи создается отдельный macvlan bridge на хосте.