Bridge network — стандартный сетевой драйвер Docker, реализующий виртуальную сеть через программный мост (Linux bridge). Контейнеры, подключённые к одному мосту, видят друг друга по IP, а наружу выходят через NAT.
Как работает
При запуске Docker создаёт интерфейс docker0 с адресом 172.17.0.1/16. Каждый новый контейнер получает виртуальный ethernet-интерфейс veth, один конец которого подключается к контейнеру, второй — к мосту. Трафик наружу идёт через iptables MASQUERADE.
Пользовательские bridge-сети (созданные через docker network create) дополнительно поддерживают DNS-резолюцию по именам контейнеров. В сети docker0 это не работает — только по IP.
Для доступа извне контейнер нужно опубликовать порт: -p 8080:80 пробрасывает порт 80 контейнера на порт 8080 хоста.
История
Linux bridge существует с ядра 2.2 (1999). Docker использует его как основной сетевой механизм с версии 0.1 (2013). В 2015 году появился плагин libnetwork, обобщивший работу с сетями — bridge стал одним из встроенных драйверов наряду с host, none, overlay и macvlan.
Виды bridge-сетей
- default bridge (docker0) — создаётся автоматически, без DNS по именам, legacy-режим.
- user-defined bridge — создаётся вручную, поддерживает DNS по именам контейнеров, изоляция между сетями.
- overlay — для Docker Swarm, мост между несколькими хостами через VXLAN.
Связь с хостингом
В контейнерной инфраструктуре bridge-сеть — базовый инструмент изоляции микросервисов. Каждая группа сервисов (например, приложение + база данных) выносится в отдельную bridge-сеть, недоступную другим контейнерам хоста. Docker Compose по умолчанию создаёт отдельную bridge-сеть для каждого проекта.
Ключевые отличия от похожих терминов
Host network подключает контейнер напрямую к сетевому стеку хоста без изоляции — быстрее, но небезопасно. Overlay network работает поверх нескольких Docker-хостов. Bridge — баланс между изоляцией и простотой для одного хоста.
Bridge в Docker
docker0 — стандартный bridge-интерфейс Docker. Контейнеры в одной сети bridge видят друг друга. Пользовательские bridge-сети лучше: DNS-разрешение по имени контейнера, изоляция от других контейнеров. docker network create mynet.
Сетевые режимы Docker
bridge (по умолчанию) — изолированная сеть с NAT. host — контейнер использует сетевой стек хоста напрямую (max производительность). none — без сети. overlay — для Docker Swarm и Kubernetes. macvlan — контейнер получает свой MAC и IP из физической сети.
Сетевая изоляция в хостинге
Несколько приложений на одном VPS: каждое в своей bridge-сети. База данных — только во внутренней сети (не проброшен порт наружу). Nginx на хосте или в gateway-контейнере — единственная точка входа. Docker Compose автоматически создаёт изолированную сеть для проекта.
Container Network Interface (CNI)
Kubernetes использует CNI плагины для сетей. Популярные: Flannel (простой, overlay), Calico (BGP, NetworkPolicy), Cilium (eBPF, высокая производительность). Выбор CNI влияет на производительность: Cilium обрабатывает трафик в eBPF без iptables — latency ниже на 30–40%. Для production Kubernetes: Cilium или Calico.