hostprofi.ru
Подобрать хостинг
Термин·буква H

Host network

краткое определение

Host network (--network=host) — режим сети Docker-контейнера, при котором контейнер использует сетевой стек хостовой системы без сетевой изоляции. Контейнер видит те же интерфейсы и порты, что и хост. Повышает производительность сети, но убирает изоляцию.

Host network — один из сетевых режимов Docker. При --network=host контейнер не создаёт собственный сетевой namespace: процессы внутри видят те же сетевые интерфейсы, IP-адреса и порты, что и хост. Нет NAT, нет маппинга портов. Если приложение слушает порт 80 — он сразу доступен на хосте на порту 80.

Режимы сети Docker

  • bridge (по умолчанию) — контейнер в изолированной сети, доступ через маппинг портов (-p 80:80).
  • host — без изоляции, контейнер использует сеть хоста.
  • none — без сети вообще.
  • overlay — сеть между несколькими хостами (Docker Swarm).
  • macvlan — контейнер получает MAC-адрес и выглядит как физическое устройство.

Когда использовать host network

Host network применяется в ситуациях, когда производительность сети критична (мониторинг, захват пакетов, высоконагруженные прокси) или когда приложение должно использовать многочисленные динамические порты (FTP passive mode, SIP). При использовании --network=host нет накладных расходов NAT/iptables.

Риски

Host network убирает сетевую изоляцию контейнера: если приложение скомпрометировано, атакующий имеет прямой доступ ко всем сетевым интерфейсам хоста. Не рекомендуется для контейнеров с недоверенным кодом или публичных приложений.

История

Host network поддерживается с Docker 0.5 (2013). В Kubernetes host network доступен через hostNetwork: true в спецификации Pod. Linux network namespaces, лежащие в основе изоляции, появились в ядре 2.4.19 (2002).

Связь с хостингом

На VDS host network используется для контейнеров мониторинга (Prometheus node_exporter) и инструментов диагностики сети. В продакшн-деплоях предпочтительнее bridge с явным маппингом портов — это лучше документирует и контролирует доступ. Docker Compose поддерживает network_mode: host.

Сетевые режимы Docker

РежимИзоляцияПроизводительностьПрименение
bridge (по умолчанию)изолировансредняябольшинство приложений
hostнетмаксимальнаясетевые инструменты
noneполнаяoffline-задачи
overlayкластернаясредняяKubernetes, Swarm
macvlanL2-изоляциявысокаяпрямой MAC-адрес

Когда использовать host network

Host network необходим когда контейнер должен видеть все сетевые интерфейсы хоста: мониторинговые агенты (Telegraf), сетевые сканеры, приложения с UDP multicast. При --network host контейнер использует тот же сетевой стек, что и VPS-хост: порт 80 в контейнере = порт 80 на сервере без маппинга.

История и особенности host network в Docker

Host network режим доступен с Docker 1.0 (2014). На macOS и Windows работает через виртуальную машину — реального разделения сетевого стека нет. Поддерживается только на Linux. В Kubernetes аналог — hostNetwork: true в Pod spec. Несовместим с опцией -p (публикация портов): порты уже принадлежат хосту.

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

  • Запуск веб-приложения в host mode — контейнер занимает порт 80 напрямую, конфликт с Nginx.
  • Использование host network для изоляции микросервисов — полная противоположность цели.
  • На Docker Desktop (Mac/Windows) host network не работает как ожидается.

Другие термины