DNS контейнеров и разрешение имен

Тема дорожной карты · Docker & Containers

В пользовательских bridge-сетях Docker поднимает встроенный DNS-сервер на 127.0.0.11, поэтому контейнеры резолвят друг друга по имени сервиса или контейнера. Дефолтная сеть bridge имена не резолвит — всегда создавайте сеть (или используйте Compose, который делает это сам). Инспектируйте через docker network inspect, отлаживайте dig @127.0.0.11 svcname или getent hosts изнутри контейнера. Апстрим-резолверы задаются через --dns, --dns-search или daemon.json. Ловушка: контейнеры с --network host наследуют резолвер хоста, а не Docker.

Как это работает

DNS контейнеров и разрешение имен создаёт виртуальные сети для общения контейнеров между собой. Дефолтный bridge (bridge) даёт каждому контейнеру IP, но не имеет DNS-discovery по имени. User-defined bridge (docker network create mynet) добавляет автоматический DNS — контейнеры достижимы по имени. Host networking (--network host) пропускает namespace; контейнер делит сетевой стек хоста. Overlay-сети — для multi-host Swarm. Публикация портов (-p 8080:80) — NAT с хоста на контейнер.

Когда применять

Всегда создавайте именованную user-defined сеть для compose-стеков (compose делает сам) — DNS-discovery бьёт жонглирование IP. Host networking — только для raw kernel-производительности или конкретного порта, который NAT не переводит. Публикуйте только порты, нужные внешнему миру; остальное живёт во внутренней сети. Для service-to-service трафика в production предпочитайте DNS-имена hardcoded IP — контейнеры приходят и уходят.

Типичные ошибки

Ловушки DNS контейнеров и разрешение имен: публикация всех портов (docker run -P) без раздумий и выставление внутренних сервисов в интернет; дефолтная сеть bridge и удивление, что DNS не работает (переходите на user-defined); путаница EXPOSE (только документация) и -p (реальный NAT); непонимание, что localhost внутри контейнера — это сам контейнер, не хост (используйте host.docker.internal в Desktop, --add-host в Linux). docker network inspect mynet — когда трафик идёт не туда.

Связанные понятия

Полезные ресурсы