JavaRush /Курси /Модуль 2: Fullstack /Використання користувацьких мереж

Використання користувацьких мереж

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

5.1 Основні види користувацьких мереж

Користувацькі мережі в Docker надають гнучкі можливості для налаштування і управління мережею між контейнерами. Вони дозволяють ізолювати контейнери, організовувати їхню взаємодію та створювати складні мережеві топології. У цій лекції ми розглянемо, як створювати і налаштовувати користувацькі мережі в Docker, а також приклади їх використання.

Основні види користувацьких мереж

Docker підтримує кілька типів користувацьких мереж, кожен з яких має свої особливості і призначений для різних сценаріїв використання:

  1. Bridge (містові мережі): забезпечують ізоляцію та зв'язок між контейнерами на одному хості. Цей тип мережі використовується за замовчуванням для локальних застосунків, яким не потрібна взаємодія за межами хоста.
  2. Overlay (оверлейні мережі): призначені для зв'язку контейнерів, які працюють на різних хостах, у кластері Docker Swarm або Kubernetes. Вони забезпечують високу масштабованість і безпеку для розподілених застосунків.
  3. Macvlan: дозволяють контейнерам безпосередньо використовувати фізичний мережевий інтерфейс хоста. Це корисно для мережевих застосунків із високими вимогами до продуктивності, а також для випадків, коли потрібна прив'язка до конкретних MAC-адрес. Контейнери в мережі Macvlan можуть взаємодіяти з іншими пристроями у фізичній мережі як окремі вузли.
  4. Host (мережі хоста): контейнери використовують мережевий стек хоста, що усуває накладні витрати на мережеву віртуалізацію, але зменшує ізоляцію. Цей тип мережі підходить для застосунків, що потребують максимальної продуктивності мережі.

5.2 Створення та використання мостових (bridge) мереж

Мостові мережі (bridge) є найпоширенішим типом користувацьких мереж і використовуються для ізоляції контейнерів на одному хості. Контейнери, підключені до однієї і тієї ж мережі bridge, можуть взаємодіяти один з одним за IP-адресами та іменами хостів.

Створення користувацької bridge мережі

Для створення користувацької bridge мережі використовуйте команду docker network create:

Terminal

docker network create --driver bridge my_bridge_network

Запуск контейнерів у користувацькій мережі

Запустіть контейнери з підключенням до створеної мережі:

Terminal

docker run -d --name container1 --network my_bridge_network nginx

docker run -d --name container2 --network my_bridge_network busybox sleep 1000

Перевірка зв'язку між контейнерами

Ви можете використовувати команду ping для перевірки зв'язку між контейнерами:

Terminal

docker exec container2 ping -c 4 container1

Якщо контейнери правильно підключені до мережі my_bridge_network, команда ping буде успішною.

5.3 Користувацькі мережі в Docker Compose

Приклади використання користувацьких мереж в Docker Compose

Docker Compose спрощує створення та управління мережами для багатоконтейнерних додатків. Ти можеш визначити користувацькі мережі у файлі docker-compose.yml.

Приклад файлу docker-compose.yml:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_bridge_network

  app:
    image: myapp:latest
    networks:
      - my_bridge_network

networks:
  my_bridge_network:
    driver: bridge

Запусти Docker Compose:

Terminal

docker compose up -d

У цьому прикладі обидва сервіси (web і app) підключені до користувацької мережі my_bridge_network.

5.4 Налаштування та використання macvlan мереж

Мережі macvlan дозволяють контейнерам напряму використовувати фізичний мережевий інтерфейс хоста, що може бути корисно для застосунків із високими вимогами до продуктивності мережі. Контейнери в такій мережі отримують власні IP-адреси в межах вказаної підмережі, що робить їх видимими в тій самій мережі, що й хост.

Створення мережі macvlan

Terminal

docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my_macvlan_network

У цій команді:

  • --subnet: визначає підмережу, в якій будуть знаходитись контейнери.
  • --gateway: задає шлюз для контейнерів.
  • -o parent: вказує мережевий інтерфейс хоста, до якого прив’язується мережа.

Запуск контейнерів у мережі macvlan

Terminal

docker run -d --name container1 --network my_macvlan_network nginx

docker run -d --name container2 --network my_macvlan_network busybox sleep 1000

У цьому прикладі обидва контейнери під'єднані до мережі my_macvlan_network і мають доступ до зовнішньої мережі через фізичний інтерфейс eth0.

5.5 Приклади використання у Docker Compose

Ти також можеш використовувати macvlan мережі в Docker Compose. Наприклад:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_macvlan_network
        
networks:
  my_macvlan_network:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

Запусти Docker Compose:

Terminal

docker compose up -d

У цьому прикладі мережа my_macvlan_network дозволяє сервісу web взаємодіяти з пристроями в підмережі 192.168.1.0/24, включно з хостом.

Практичні рекомендації:

  • Налаштування доступу: Переконайся, що твій маршрутизатор або мережевий адміністратор дозволяє використання підмережі, вказаної у налаштуваннях macvlan.
  • Ізоляція: Якщо важлива безпека, використовуй VLAN для сегментації мережі, щоб контейнери мали доступ тільки до потрібних ресурсів.
  • Тестування: Після налаштування перевір зв'язок між контейнерами та зовнішньою мережею за допомогою команд ping або curl.

5.6 Приклад використання мереж для мікросервісів

Давай розглянемо приклад, де у нас є фронтенд, бекенд і база даних, які ізольовані в різні мережі, проте забезпечують взаємодію через перетин мереж.

Файл docker-compose.yml

Yaml

version: '3.8'

services:
  frontend:
    image: myfrontend:latest
    networks:
      - front-tier
      - back-tier
        
  backend:
    image: mybackend:latest
    networks:
      - back-tier
      - db-tier
        
  database:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    networks:
      - db-tier
        
networks:
  front-tier:
    driver: bridge
  back-tier:
    driver: bridge
  db-tier:
    driver: bridge

Запустіть Docker Compose:

Terminal

docker compose up -d 

У цьому прикладі:

  • Сервіс frontend підключений до мереж front-tier та back-tier, що дозволяє йому взаємодіяти як з зовнішніми клієнтами, так і з бекендом.
  • Сервіс backend підключений до мереж back-tier та db-tier, що дозволяє йому взаємодіяти як з фронтендом, так і з базою даних.
  • Сервіс database підключений тільки до мережі db-tier, що забезпечує ізоляцію бази даних від зовнішнього доступу.

Практичні рекомендації:

  • Використовуйте ізоляцію: Розділення мереж допомагає обмежити доступ сервісів до баз даних або інших критичних ресурсів.
  • Перевірка зв’язку: Переконайтеся, що сервіси можуть взаємодіяти один з одним через спільні мережі, використовуючи команди ping або curl.
  • Оптимізація: Використовуйте мережу overlay, якщо ваш проєкт передбачає роботу в кластері або на кількох хостах.

Цей приклад ілюструє, як створювати мережеву ізоляцію й одночасно забезпечувати взаємодію між різними рівнями застосунку.

1
Опитування
Мережеві налаштування Docker, рівень 15, лекція 4
Недоступний
Мережеві налаштування Docker
Мережеві налаштування Docker
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ