JavaRush /Курсы /Модуль 2: Fullstack /Основные сетевые драйверы Docker

Основные сетевые драйверы Docker

Модуль 2: Fullstack
15 уровень , 0 лекция
Открыта

1.1 Сетевой драйвер Bridge

Сетевые драйверы Docker позволяют контейнерам взаимодействовать между собой и с внешними сетями. Docker предоставляет несколько сетевых драйверов, каждый из которых имеет свои особенности и предназначен для определенных сценариев использования. В этой лекции мы рассмотрим четыре основных сетевых драйвера: bridge, host, none и overlay.

Сетевой драйвер bridge является сетевым драйвером по умолчанию в Docker. Он создает частную внутреннюю сеть, в которой контейнеры могут общаться друг с другом. Эта сеть изолирована от внешней сети хоста.

Особенности:

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

Пример использования:

При создании контейнера без указания сети он автоматически подключается к сети bridge.

Terminal

docker run -d --name my_container nginx 

Для настройки проброса порта используется флаг -p.

Terminal

docker run -d -p 8080:80 --name my_container nginx 

1.2 Сетевой драйвер Host

Сетевой драйвер host позволяет контейнеру использовать сетевой стек хостовой машины напрямую. Это означает, что контейнер будет иметь тот же IP-адрес, что и хост, и сможет использовать все сетевые интерфейсы хоста.

Особенности:

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

Пример использования:

Terminal

docker run -d --network host --name my_container nginx 

1.3 Сетевой драйвер None

Сетевой драйвер none отключает все сетевые возможности контейнера. Контейнер, подключенный к сети none, не имеет сетевого интерфейса, что полностью изолирует его от других контейнеров и сетей.

Особенности:

  • Полная изоляция контейнера от всех сетей.
  • Полезен для контейнеров, которым не требуется сеть, например, для выполнения заданий, не зависящих от сети.

Пример использования:

Terminal

docker run -d --network none --name my_container busybox 

1.4 Сетевой драйвер Overlay

Сетевой драйвер overlay используется для создания распределенной сети, которая охватывает несколько хостов Docker. Этот драйвер часто используется в Docker Swarm или Kubernetes для обеспечения сетевого взаимодействия между контейнерами на разных хостах.

Особенности:

  • Обеспечивает связь между контейнерами на разных хостах.
  • Требует настроенной кластеризации, такой как Docker Swarm.
  • Позволяет создавать виртуальные сети поверх существующих сетей, обеспечивая высокий уровень изоляции и безопасности.

Пример использования:

Для использования драйвера overlay необходимо сначала создать кластер Docker Swarm.

1. Инициализация Docker Swarm:

Terminal

docker swarm init

2. Создание overlay сети:

Terminal

docker network create -d overlay my_overlay_network 

3. Запуск контейнеров с подключением к overlay сети:

Terminal

docker service create --name my_service --network my_overlay_network nginx 

1.5 Сравнение сетевых драйверов

Сравнение различных сетевых драйверов

Сетевой драйвер Изоляция Производительность Применимость Особенности
bridge Высокая Умеренная Локальные сети Изолированная сеть по умолчанию
host Низкая Высокая Производительность Общий сетевой стек с хостом
none Полная Наивысшая Изоляция Полная изоляция от сети
overlay Высокая Высокая Распределенные сети Связь между контейнерами на разных хостах

Применение сетевых драйверов

  • Bridge: используйте для локальных приложений и тестирования, когда контейнеры должны взаимодействовать друг с другом, но должны быть изолированы от внешней сети.
  • Host: применяйте для приложений, требующих высокой производительности сети или специальных сетевых конфигураций, где изоляция сети не является приоритетом.
  • None: используйте для полностью изолированных контейнеров, которым не требуется сетевое взаимодействие.
  • Overlay: используйте для распределенных приложений, работающих в кластере, где необходимо обеспечить связь между контейнерами на разных хостах.
3
Задача
Модуль 2: Fullstack, 15 уровень, 0 лекция
Недоступна
Запуск контейнера в bridge-сети
Запуск контейнера в bridge-сети
3
Задача
Модуль 2: Fullstack, 15 уровень, 0 лекция
Недоступна
Запуск контейнера в host-сети
Запуск контейнера в host-сети
3
Задача
Модуль 2: Fullstack, 15 уровень, 0 лекция
Недоступна
Полная изоляция сети
Полная изоляция сети
3
Задача
Модуль 2: Fullstack, 15 уровень, 0 лекция
Недоступна
Создание overlay-сети
Создание overlay-сети
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Александр Уровень 45
3 января 2025
Задача Создание overlay-сети. Для проверки работы сервиса nginx, можно посмотреть список работающих сервисов с помощью команды docker service ls
Ivan Уровень 59
3 июня 2025
Я её просто с помощью docker run запустил