bridge, host, none, overlay
Тема дорожной карты · Docker & Containers
В Docker четыре встроенных сетевых драйвера, выбираемых через --network. bridge (по умолчанию) — виртуальный switch на хост, хватает для однохостовых нагрузок; user-defined bridge добавляет DNS-резолв сервисов. host пропускает network namespace и делит сетевой стек с хостом — самый быстрый, но без изоляции портов и только на Linux. none оставляет контейнеру только lo — пригодно для batch-задач и чувствительных к безопасности нагрузок. overlay соединяет несколько Swarm-хостов через VXLAN. Выбор — по нуждам в изоляции, производительности и discovery.
Как это работает
bridge, host, none, overlay создаёт виртуальные сети для общения контейнеров между собой. Дефолтный 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 — контейнеры приходят и уходят.
Типичные ошибки
Ловушки bridge, host, none, overlay: публикация всех портов (docker run -P) без раздумий и выставление внутренних сервисов в интернет; дефолтная сеть bridge и удивление, что DNS не работает (переходите на user-defined); путаница EXPOSE (только документация) и -p (реальный NAT); непонимание, что localhost внутри контейнера — это сам контейнер, не хост (используйте host.docker.internal в Desktop, --add-host в Linux). docker network inspect mynet — когда трафик идёт не туда.