Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

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 на хосте.

Полезные материалы
Рекомендуем