CodeGym /Cours /Docker SELF /Utilisation des réseaux personnalisés

Utilisation des réseaux personnalisés

Docker SELF
Niveau 17 , Leçon 4
Disponible

5.1 Types principaux de réseaux personnalisés

Les réseaux personnalisés dans Docker offrent des options flexibles pour configurer et gérer l'interaction réseau entre les containers. Ils permettent d'isoler les containers, d'organiser leurs interactions et de créer des topologies réseau complexes. Dans cette conférence, on va voir comment créer et configurer des réseaux personnalisés dans Docker, ainsi que des exemples de leur utilisation.

Types principaux de réseaux personnalisés

Docker prend en charge plusieurs types de réseaux personnalisés, chacun ayant ses propres caractéristiques et étant destiné à différents scénarios d'utilisation :

  1. Bridge (réseaux bridge): fournissent l'isolation et la communication entre les containers sur un même hôte. Ce type de réseau est utilisé par défaut pour les applications locales qui n'ont pas besoin d'interagir au-delà de l'hôte.
  2. Overlay (réseaux overlay): conçus pour la communication entre containers fonctionnant sur différents hôtes, dans un cluster Docker Swarm ou Kubernetes. Ils offrent une grande évolutivité et sécurité pour les applications distribuées.
  3. Macvlan: permettent aux containers d'utiliser directement l'interface réseau physique de l'hôte. C'est utile pour les applications réseau ayant des exigences élevées en matière de performances ainsi que pour les cas où une liaison à des adresses MAC spécifiques est nécessaire. Les containers dans un réseau Macvlan peuvent interagir avec d'autres appareils du réseau physique en tant que nœuds distincts.
  4. Host (réseaux hôte): les containers utilisent la pile réseau de l'hôte, ce qui élimine les frais généraux de virtualisation réseau, mais réduit l'isolement. Ce type de réseau convient aux applications nécessitant des performances réseau maximales.

5.2 Création et utilisation des réseaux bridge

Les réseaux bridge sont le type de réseau personnalisé le plus courant et sont utilisés pour isoler les conteneurs sur un même hôte. Les conteneurs connectés au même réseau bridge peuvent interagir entre eux via des adresses IP et des noms d'hôtes.

Création d'un réseau bridge personnalisé

Pour créer un réseau bridge personnalisé, utilisez la commande docker network create:

Terminal

docker network create --driver bridge my_bridge_network

Lancement de conteneurs dans un réseau personnalisé

Lancez les conteneurs en les connectant au réseau créé:

Terminal

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

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

Vérification de la connexion entre les conteneurs

Vous pouvez utiliser la commande ping pour vérifier la connexion entre les conteneurs:

Terminal

docker exec container2 ping -c 4 container1

Si les conteneurs sont correctement connectés au réseau my_bridge_network, la commande ping sera réussie.

5.3 Les réseaux personnalisés dans Docker Compose

Exemples d'utilisation des réseaux personnalisés dans Docker Compose

Docker Compose facilite la création et la gestion des réseaux pour des applications multi-conteneurs. Tu peux définir des réseaux personnalisés dans le fichier docker-compose.yml.

Exemple de fichier 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

Lance Docker Compose :

Terminal

docker compose up -d

Dans cet exemple, les deux services (web et app) sont connectés au réseau personnalisé my_bridge_network.

5.4 Configuration et utilisation des réseaux macvlan

Les réseaux macvlan permettent aux conteneurs d'utiliser directement l'interface réseau physique de l'hôte, ce qui peut être utile pour les applications ayant des exigences élevées en matière de performances réseau. Les conteneurs dans un tel réseau reçoivent leurs propres adresses IP dans le sous-réseau spécifié, ce qui les rend visibles sur le même réseau que l'hôte.

Création d'un réseau macvlan

Terminal

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

Dans cette commande :

  • --subnet: définit le sous-réseau où seront situés les conteneurs.
  • --gateway: spécifie la passerelle pour les conteneurs.
  • -o parent: indique l'interface réseau de l'hôte à laquelle le réseau est lié.

Lancement des conteneurs dans le réseau macvlan

Terminal

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

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

Dans cet exemple, les deux conteneurs sont connectés au réseau my_macvlan_network et ont accès au réseau externe via l'interface physique eth0.

5.5 Exemples d'utilisation dans Docker Compose

Tu peux aussi utiliser les réseaux macvlan dans Docker Compose. Par exemple :

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

Lance Docker Compose :

Terminal

docker compose up -d

Dans cet exemple, le réseau my_macvlan_network permet au service web d'interagir avec les appareils du sous-réseau 192.168.1.0/24, y compris l'hôte.

Conseils pratiques :

  • Configuration de l'accès : Assure-toi que ton routeur ou ton administrateur réseau autorise l'utilisation du sous-réseau spécifié dans les paramètres macvlan.
  • Isolation : Si la sécurité est importante, utilise VLAN pour segmenter le réseau, afin que les conteneurs aient accès uniquement aux ressources nécessaires.
  • Test : Après la configuration, vérifie la communication entre les conteneurs et le réseau externe en utilisant des commandes comme ping ou curl.

5.6 Exemple d'utilisation des réseaux pour les microservices

Prenons un exemple où nous avons un frontend, un backend et une base de données qui sont isolés dans différents réseaux, mais qui assurent une interaction via le croisement des réseaux.

Fichier 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

Lancez Docker Compose:

Terminal

docker compose up -d 

Dans cet exemple :

  • Le service frontend est connecté aux réseaux front-tier et back-tier, ce qui lui permet d'interagir à la fois avec les clients externes et le backend.
  • Le service backend est connecté aux réseaux back-tier et db-tier, ce qui lui permet d'interagir à la fois avec le frontend et la base de données.
  • Le service database est uniquement connecté au réseau db-tier, garantissant l'isolation de la base de données contre tout accès externe.

Recommandations pratiques :

  • Utilisez l'isolation : La séparation des réseaux permet de limiter l'accès des services aux bases de données ou à d'autres ressources critiques.
  • Vérifiez les connexions : Assurez-vous que les services peuvent interagir entre eux via des réseaux communs en utilisant des commandes comme ping ou curl.
  • Optimisation : Utilisez un réseau de type overlay si votre projet doit fonctionner en cluster ou sur plusieurs hôtes.

Cet exemple illustre comment créer une isolation réseau tout en assurant l'interaction entre différents niveaux d'une application.

1
Опрос
Paramètres réseau Docker,  17 уровень,  4 лекция
недоступен
Paramètres réseau Docker
Paramètres réseau Docker
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION