← Назад ко всем вопросам

Как работает Docker networking (bridge/host/overlay)

1️⃣ Как кратко ответить

Docker networking предоставляет три основных режима: bridge, host и overlay. Bridge создает изолированную сеть для контейнеров на одном хосте. Host позволяет контейнерам использовать сетевой стек хоста напрямую. Overlay соединяет контейнеры на разных хостах в единую виртуальную сеть, используя внутренние механизмы Docker Swarm или Kubernetes.

2️⃣ Подробное объяснение темы

Docker networking — это система, которая позволяет контейнерам взаимодействовать друг с другом и с внешним миром. Она поддерживает несколько сетевых режимов, каждый из которых имеет свои особенности и применяется в различных сценариях.

Bridge Network

Bridge — это стандартный сетевой режим Docker, который используется по умолчанию. Он создает виртуальную сеть на уровне хоста, в которой контейнеры могут взаимодействовать друг с другом. Это похоже на создание виртуального коммутатора, к которому подключаются контейнеры.

  • Изоляция: Контейнеры в bridge-сети изолированы от хоста и других сетей, что обеспечивает безопасность.
  • IP-адресация: Каждый контейнер получает свой IP-адрес в пределах bridge-сети.
  • Проброс портов: Для доступа к контейнерам извне необходимо пробрасывать порты.

Пример создания bridge-сети и запуска контейнера:

# Создаем новую bridge-сеть
docker network create my_bridge_network
​
# Запускаем контейнер, подключенный к этой сети
docker run -d --name my_container --network my_bridge_network nginx
  • docker network create my_bridge_network: Создает новую bridge-сеть с именем my_bridge_network.
  • docker run -d --name my_container --network my_bridge_network nginx: Запускает контейнер с именем my_container, подключенный к сети my_bridge_network, используя образ nginx.

Host Network

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

  • Производительность: Уменьшает накладные расходы на сетевую виртуализацию, что может улучшить производительность.
  • Отсутствие изоляции: Контейнеры не изолированы от хоста, что может быть небезопасно.

Пример запуска контейнера в host-сети:

# Запускаем контейнер с использованием host-сети
docker run -d --name my_host_container --network host nginx
  • --network host: Указывает Docker использовать сетевой стек хоста для контейнера.

Overlay Network

Overlay network используется для соединения контейнеров, работающих на разных хостах, в единую виртуальную сеть. Это особенно полезно в распределенных системах, таких как Docker Swarm или Kubernetes.

  • Масштабируемость: Позволяет создавать распределенные приложения, которые могут работать на нескольких хостах.
  • Безопасность: Поддерживает шифрование трафика между контейнерами.

Пример создания overlay-сети в Docker Swarm:

# Инициализируем Docker Swarm
docker swarm init
​
# Создаем overlay-сеть
docker network create --driver overlay my_overlay_network
​
# Запускаем сервис, подключенный к overlay-сети
docker service create --name my_service --network my_overlay_network nginx
  • docker swarm init: Инициализирует Docker Swarm на текущем хосте.
  • docker network create --driver overlay my_overlay_network: Создает overlay-сеть с именем my_overlay_network.
  • docker service create --name my_service --network my_overlay_network nginx: Создает сервис my_service, подключенный к сети my_overlay_network, используя образ nginx.

Каждый из этих сетевых режимов имеет свои преимущества и ограничения, и выбор подходящего режима зависит от конкретных требований приложения и инфраструктуры.

Тема: Инфраструктура
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки