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.
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.
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.
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
:
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
:
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é :
docker network create --driver bridge my_bridge_network
2. Lancer des conteneurs dans le réseau personnalisé :
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 :
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 :
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 :
docker compose up -d
Vérifiez la connexion entre les conteneurs :
docker compose exec web ping -c 4 db
Exemple 2 : Architecture microservices
Créez un fichier docker-compose.yml
pour une application microservices :
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
:
docker compose up -d
Vérifiez la connexion entre les conteneurs :
docker compose exec backend ping -c 4 db
docker compose exec frontend ping -c 4 backend
GO TO FULL VERSION