CodeGym /Kursy /Docker SELF /Korzystanie z sieci użytkownika

Korzystanie z sieci użytkownika

Docker SELF
Poziom 17 , Lekcja 4
Dostępny

5.1 Główne rodzaje sieci użytkownika

Sieci użytkownika w Dockerze oferują elastyczne możliwości konfiguracji i zarządzania interakcją między kontenerami. Pozwalają na izolację kontenerów, organizowanie ich interakcji oraz tworzenie złożonych topologii sieciowych. W tym wykładzie przeanalizujemy, jak tworzyć i konfigurować sieci użytkownika w Dockerze, a także przykłady ich zastosowania.

Główne rodzaje sieci użytkownika

Docker obsługuje kilka typów sieci użytkownika, z których każdy ma swoje cechy szczególne i jest przeznaczony do różnych scenariuszy użycia:

  1. Bridge (sieci mostowe): zapewniają izolację i połączenie między kontenerami na jednym hostingu. Ten typ sieci jest używany domyślnie dla lokalnych aplikacji, które nie wymagają interakcji poza hostingiem.
  2. Overlay (sieci nakładkowe): są przeznaczone do połączenia kontenerów działających na różnych hostach w klastrze Docker Swarm lub Kubernetes. Zapewniają wysoką skalowalność i bezpieczeństwo dla rozproszonych aplikacji.
  3. Macvlan: pozwalają kontenerom bezpośrednio korzystać z fizycznego interfejsu sieciowego hosta. Jest to przydatne dla aplikacji sieciowych z wysokimi wymaganiami dotyczącymi wydajności, a także w przypadkach, gdy wymagana jest integracja z określonymi adresami MAC. Kontenery w sieci Macvlan mogą komunikować się z innymi urządzeniami w fizycznej sieci jako oddzielne węzły.
  4. Host (sieci hosta): kontenery korzystają ze stosu sieciowego hosta, co eliminuje narzuty związane z wirtualizacją sieci, ale zmniejsza izolację. Ten typ sieci nadaje się do aplikacji wymagających maksymalnej wydajności sieciowej.

5.2 Tworzenie i użycie sieci mostowych (bridge)

Sieci mostowe (bridge) są najczęściej używanym rodzajem sieci użytkownika i są wykorzystywane do izolacji kontenerów na jednym hoście. Kontenery podłączone do tej samej sieci bridge mogą komunikować się ze sobą za pomocą adresów IP i nazw hostów.

Tworzenie użytkownika bridge sieci

Aby utworzyć użytkownika bridge sieci, użyj polecenia docker network create:

Terminal

docker network create --driver bridge my_bridge_network

Uruchamianie kontenerów w użytkownika sieci

Uruchom kontenery z podłączeniem do utworzonej sieci:

Terminal

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

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

Sprawdzanie połączenia pomiędzy kontenerami

Możesz użyć polecenia ping, aby sprawdzić połączenie pomiędzy kontenerami:

Terminal

docker exec container2 ping -c 4 container1

Jeżeli kontenery są poprawnie podłączone do sieci my_bridge_network, polecenie ping zakończy się sukcesem.

5.3 Sieci użytkownika w Docker Compose

Przykłady korzystania z sieci użytkownika w Docker Compose

Docker Compose ułatwia tworzenie i zarządzanie sieciami dla aplikacji wielokontenerowych. Możesz zdefiniować sieci użytkownika w pliku docker-compose.yml.

Przykład pliku 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

Uruchom Docker Compose:

Terminal

docker compose up -d

W tym przykładzie oba serwisy (web i app) są podłączone do sieci użytkownika my_bridge_network.

5.4 Konfiguracja i użycie sieci macvlan

Sieci macvlan pozwalają kontenerom na bezpośrednie korzystanie z fizycznego interfejsu sieciowego hosta, co może być przydatne dla aplikacji z wysokimi wymaganiami dotyczącymi wydajności sieci. Kontenery w takiej sieci otrzymują własne adresy IP w określonej podsieci, co sprawia, że są widoczne w tej samej sieci co host.

Tworzenie sieci macvlan

Terminal

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

W tej komendzie:

  • --subnet: określa podsieć, w której będą znajdować się kontenery.
  • --gateway: ustawia bramę dla kontenerów.
  • -o parent: wskazuje interfejs sieciowy hosta, do którego przypisana jest sieć.

Uruchamianie kontenerów w sieci macvlan

Terminal

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

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

W tym przykładzie oba kontenery są podłączone do sieci my_macvlan_network i mają dostęp do zewnętrznej sieci poprzez fizyczny interfejs eth0.

5.5 Przykłady użycia w Docker Compose

Możesz również używać sieci macvlan w Docker Compose. Na przykład:

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

Uruchom Docker Compose:

Terminal

docker compose up -d

W tym przykładzie sieć my_macvlan_network pozwala serwisowi web komunikować się z urządzeniami w podsieci 192.168.1.0/24, w tym z hostem.

Praktyczne wskazówki:

  • Konfiguracja dostępu: Upewnij się, że twój router lub administrator sieci zezwala na używanie podsieci wskazanej w konfiguracji macvlan.
  • Izolacja: Jeśli bezpieczeństwo jest ważne, użyj VLAN do segmentacji sieci, aby kontenery miały dostęp tylko do wymaganych zasobów.
  • Testowanie: Po konfiguracji sprawdź komunikację między kontenerami a siecią zewnętrzną za pomocą poleceń ping lub curl.

5.6 Przykład wykorzystania sieci dla mikroserwisów

Rozważmy przykład, w którym mamy frontend, backend i bazę danych, które są odizolowane w różnych sieciach, ale jednocześnie zapewniają współdziałanie poprzez przecięcia sieci.

Plik 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

Uruchom Docker Compose:

Terminal

docker compose up -d 

W tym przykładzie:

  • Serwis frontend jest podłączony do sieci front-tier i back-tier, co pozwala mu współdziałać zarówno z zewnętrznymi klientami, jak i z backendem.
  • Serwis backend jest podłączony do sieci back-tier i db-tier, co pozwala mu współdziałać zarówno z frontendem, jak i z bazą danych.
  • Serwis database jest podłączony tylko do sieci db-tier, co zapewnia izolację bazy danych od zewnętrznego dostępu.

Praktyczne zalecenia:

  • Wykorzystaj izolację: Podział sieci pomaga ograniczyć dostęp serwisów do baz danych lub innych krytycznych zasobów.
  • Sprawdzenie połączenia: Upewnij się, że serwisy mogą współdziałać ze sobą przez wspólne sieci, używając komend ping lub curl.
  • Optymalizacja: Użyj sieci overlay, jeśli Twój projekt wymaga pracy w klastrze lub na kilku hostach.

Ten przykład ilustruje, jak tworzyć izolację sieciową i jednocześnie zapewniać współdziałanie pomiędzy różnymi poziomami aplikacji.

1
Опрос
Ustawienia sieciowe Docker,  17 уровень,  4 лекция
недоступен
Ustawienia sieciowe Docker
Ustawienia sieciowe Docker
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION