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, працюють швидше за рахунок зменшення накладних витрат на мережеву віртуалізацію. - Контейнери мають доступ до тих самих мережевих інтерфейсів, що й хост, що може збільшити ризики безпеки.
- Використовується у сценаріях, де потрібна висока продуктивність мережі або специфічні мережеві конфігурації.
Приклад використання:
docker run -d --network host --name my_container nginx
1.3 Мережевий драйвер None
Мережевий драйвер none відключає всі мережеві можливості контейнера. Контейнер, підключений до мережі none, не має мережевого інтерфейсу, що повністю ізолює його від інших контейнерів і мереж.
Особливості:
- Повна ізоляція контейнера від усіх мереж.
- Корисний для контейнерів, яким не потрібна мережева взаємодія, наприклад, для виконання задач, що не залежать від мережі.
Приклад використання:
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:
docker swarm init
2. Створення overlay мережі:
docker network create -d overlay my_overlay_network
3. Запуск контейнерів з підключенням до overlay мережі:
docker service create --name my_service --network my_overlay_network nginx
1.5 Порівняння мережевих драйверів
Порівняння різних мережевих драйверів
| Мережевий драйвер | Ізоляція | Продуктивність | Застосованість | Особливості |
|---|---|---|---|---|
| bridge | Висока | Середня | Локальні мережі | Ізольована мережа за замовчуванням |
| host | Низька | Висока | Продуктивність | Загальний мережевий стек із хостом |
| none | Повна | Найвища | Ізоляція | Повна ізоляція від мережі |
| overlay | Висока | Висока | Розподілені мережі | Зв'язок між контейнерами на різних хостах |
Застосування мережевих драйверів
-
Bridge: використовуйте для локальних застосунків і тестування, коли контейнери повинні взаємодіяти один з одним, але мають бути ізольовані від зовнішньої мережі. -
Host: застосовуйте для застосунків, які потребують високої продуктивності мережі або спеціальних мережевих конфігурацій, де ізоляція мережі не є пріоритетом. -
None: використовуйте для повністю ізольованих контейнерів, яким не потрібно мережеве взаємодія. -
Overlay: використовуйте для розподілених застосунків, які працюють у кластері, де необхідно забезпечити зв'язок між контейнерами на різних хостах.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ