JavaRush /Курси /Модуль 2: Fullstack /Основні мережеві драйвери Docker

Основні мережеві драйвери Docker

Модуль 2: Fullstack
Рівень 15 , Лекція 0
Відкрита

1.1 Мережевий драйвер Bridge

Мережеві драйвери Docker дозволяють контейнерам взаємодіяти між собою та з зовнішніми мережами. Docker надає кілька мережевих драйверів, кожен із яких має свої особливості та призначений для певних сценаріїв використання. У цій лекції ми розглянемо чотири основні мережеві драйвери: bridge, host, none і overlay.

Мережевий драйвер bridge є мережевим драйвером за замовчуванням у Docker. Він створює приватну внутрішню мережу, в якій контейнери можуть спілкуватися між собою. Ця мережа ізольована від зовнішньої мережі хоста.

Особливості:

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

Приклад використання:

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

Термінал

docker run -d --name my_container nginx 

Для налаштування пробросу порту використовується прапорець -p.

Термінал

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: використовуйте для розподілених застосунків, які працюють у кластері, де необхідно забезпечити зв'язок між контейнерами на різних хостах.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ