CodeGym /Cours /Docker SELF /Relation entre les conteneurs

Relation entre les conteneurs

Docker SELF
Niveau 17 , Leçon 2
Disponible

3.1 Bases du bridge-network

Le réseau bridge est le driver réseau par défaut dans Docker et il est utilisé pour créer un réseau isolé, où les conteneurs peuvent interagir entre eux. Ce réseau permet aux conteneurs de communiquer via des adresses IP et des noms d'hôtes, offrant un moyen pratique d'organiser l'interaction entre différents composants des applications multi-conteneurs.

Le réseau bridge crée un réseau interne privé au niveau de l'hôte, qui est isolé du réseau externe de l'hôte. Les conteneurs connectés à ce réseau peuvent interagir entre eux, mais ils ne peuvent pas être directement accessibles de l'extérieur sans configurer un forwarding des ports.

Création automatique d'un bridge-network

Par défaut, Docker crée un réseau bridge lors de l'installation, et les conteneurs lancés sans spécifier de réseau particulier se connectent automatiquement à ce réseau.

Exemple de création et d'utilisation des conteneurs dans un bridge-network

1. Lancement des conteneurs dans le réseau bridge :

Dans cet exemple, on lance deux conteneurs : container1 avec Nginx et container2 avec Busybox. Les deux conteneurs sont connectés au réseau bridge par défaut.

Terminal

docker run -d --name container1 nginx
docker run -d --name container2 busybox sleep 1000

2. Vérification des adresses IP des conteneurs :

Pour vérifier les adresses IP des conteneurs, utilisez la commande docker inspect.

Ces commandes afficheront les adresses IP des conteneurs, qui peuvent être utilisées pour communiquer entre eux.

Terminal

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2

3. Communication entre les conteneurs via l'adresse IP :

Pour vérifier la connexion entre les conteneurs, utilisez la commande ping depuis le conteneur container2 pour pinger container1.

Si les conteneurs sont correctement connectés au réseau bridge, la commande ping réussira.

Terminal

docker exec container2 ping -c 4 <IP_ADDRESS_OF_CONTAINER1>

Explication : Le réseau bridge fournit une solution simple pour les applications locales où les conteneurs doivent interagir entre eux tout en restant isolés du réseau externe. Le ping via une adresse IP est une méthode basique pour vérifier la connexion réseau, mais pour des applications plus complexes, une configuration DNS ou des drivers réseau supplémentaires peuvent être nécessaires.

3.2 Utilisation de noms d'hôte

Utiliser des noms d'hôte pour connecter des conteneurs

En plus d'utiliser des adresses IP, Docker te permet aussi d'utiliser les noms des conteneurs pour les connecter entre eux. Ça simplifie la config, vu que les noms des conteneurs restent constants, contrairement aux adresses IP qui peuvent changer quand les conteneurs redémarrent.

Exemple de connexion par nom d'hôte

1. Lancer des conteneurs en spécifiant le réseau bridge:

Terminal

docker run -d --name webserver --network bridge nginx
docker run -d --name appserver --network bridge busybox sleep 1000
    

2. Vérifier la connexion par nom d'hôte :

Utilise la commande ping depuis le conteneur appserver pour pinguer webserver :

Terminal

docker exec appserver ping -c 4 webserver 
    

Créer un réseau personnalisé de type bridge

Au lieu d'utiliser le réseau bridge par défaut, tu peux créer un réseau bridge personnalisé pour mieux contrôler la communication entre les conteneurs.

Exemple de création d'un réseau personnalisé

1. Créer un réseau personnalisé :

Terminal

docker network create --driver bridge my_bridge_network 
    

2. Lancer des conteneurs dans le réseau personnalisé :

Terminal

docker run -d --name webserver --network my_bridge_network nginx
docker run -d --name appserver --network my_bridge_network busybox sleep 1000 
    

3. Vérifier la connexion par nom d'hôte :

Terminal

docker exec appserver ping -c 4 webserver 
    

3.3 Exemples de plusieurs hôtes

Exemples d'utilisation pratique

Exemple 1 : Serveur web et base de données

Créez un fichier docker-compose.yml pour le serveur web et la base de données :

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_bridge_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: utilisateur
      POSTGRES_PASSWORD: motdepasse
    networks:
      - my_bridge_network
        
networks:
  my_bridge_network:
    driver: bridge

Lancez Docker Compose :

Terminal


docker compose up -d 

Vérifiez la connexion entre les conteneurs :

Terminal


docker compose exec web ping -c 4 db 

Exemple 2 : Architecture microservices

Créez un fichier docker-compose.yml pour une application microservices :

Yaml

version: '3.8'

services:
  frontend:
    image: nginx:latest
    networks:
      - my_bridge_network
        
  backend:
    image: mybackend:latest
    networks:
      - my_bridge_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: utilisateur
      POSTGRES_PASSWORD: motdepasse
    networks:
      - my_bridge_network
        
networks:
  my_bridge_network:
    driver: bridge

Lancez Docker Compose:

Terminal

        
docker compose up -d 

Vérifiez la connexion entre les conteneurs :

Terminal

docker compose exec backend ping -c 4 db

docker compose exec frontend ping -c 4 backend 
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION