Créer un isolant pour que nos conteneurs discutent entre eux (docker network)
Quand on a plusieurs conteneurs, la question se pose rapidement :Comment mes conteneurs vont-ils parler entre eux ?
Docker fournit une solution simple : les réseaux, et en particulier le réseau bridge.
Le principe : un réseau isolé
Un bridge network est comme un petit réseau privé interne pour vos conteneurs.
- Les conteneurs connectés au même réseau peuvent communiquer directement.
- Par défaut, Docker crée un réseau
bridgeappelébridge, mais il est souvent mieux de créer son propre réseau dédié pour vos projets.
Exemple de création d’un réseau :
docker network create mon_reseau
mon_reseausera un réseau isolé- Seuls les conteneurs connectés à ce réseau pourront communiquer entre eux.
Lancer des conteneurs sur un réseau
docker run -d --name web --network mon_reseau nginx
docker run -d --name db --network mon_reseau mariadb
- Le conteneur
webpeut maintenant contacterdbvia son nom de service :db:3306 - Pas besoin de configurer des ports externes pour cette communication interne.
Cela facilite la sécurité et l’organisation : seuls les services nécessaires sont exposés à l’extérieur.
Communication interne
- Les conteneurs sur le même réseau voient leurs noms comme des DNS internes.
- Exemple :
docker exec -it web ping db
- Ici,
webpeut pinguerdbdirectement, sans passer par des IP fixes. - Docker gère la résolution de noms interne automatiquement.
Plusieurs réseaux possibles
Vous pouvez connecter un conteneur à plusieurs réseaux si nécessaire :
docker network create reseau_front
docker network create reseau_backdocker run -d --name web --network reseau_front nginx
docker network connect reseau_back web
webpeut maintenant communiquer avec des conteneurs sur reseau_front et reseau_back.- Très utile pour séparer les couches : front-end / back-end / base de données.
Autres types de réseau Docker
Docker propose plusieurs types de réseaux selon les besoins :
| Type de réseau | Utilité principale |
|---|---|
| bridge | Réseau interne isolé, par défaut pour la plupart des projets |
| host | Conteneur partage le réseau de l’hôte, pas d’isolation |
| macvlan | Chaque conteneur a sa propre IP sur le réseau physique |
| overlay | Réseaux multi-hôtes, utilisé avec Docker Swarm |
Pour la majorité des cas de développement et de petites stacks, le réseau bridge suffit largement.
Vérifier les réseaux et conteneurs
Pour lister les réseaux :
docker network ls
Pour inspecter un réseau et voir les conteneurs connectés :
docker network inspect mon_reseau
- On peut alors voir les conteneurs, leurs IP internes et le subnet associé.
Schéma visuel simplifié
[ bridge network : mon_reseau ]
------------------------------
| | |
web:80 db:3306 autre:5000
| | |
------------------------------
Communication interne via noms
- Tous les conteneurs connectés au même réseau peuvent se parler directement
- Les ports externes ne sont pas nécessaires pour cette communication interne.
- Le réseau est isolé de l’extérieur, sauf si on mappe un port.
Commandes pratiques pour gérer les réseaux Docker
Voici les commandes les plus utiles pour créer, inspecter et nettoyer vos réseaux :
Lister tous les réseaux
docker network ls
- Affiche tous les réseaux existants sur votre machine Docker.
- Exemple de sortie :
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5f6 bridge bridge local
b2c3d4e5f6g7 mon_reseau bridge local
Inspecter un réseau
docker network inspect mon_reseau
- Montre les conteneurs connectés, leurs IP internes, le subnet, etc.
- Très utile pour debugger la communication interne.
Créer un réseau personnalisé
docker network create mon_reseau
- Crée un réseau bridge isolé nommé
mon_reseau. - Vous pouvez connecter des conteneurs existants à ce réseau :
docker network connect mon_reseau mon_conteneur
Déconnecter un conteneur d’un réseau
docker network disconnect mon_reseau mon_conteneur
- Déconnecte le conteneur sans l’arrêter.
- Pratique si vous voulez réorganiser vos réseaux dynamiquement.
Supprimer un réseau
docker network rm mon_reseau
- Supprime le réseau (les conteneurs connectés doivent être déconnectés d’abord).
A retenir
- Le bridge network permet à vos conteneurs de communiquer entre eux sans exposer de ports.
- Les noms des conteneurs servent de DNS interne pour la communication.
- On peut connecter un conteneur à plusieurs réseaux.
- Les commandes
docker network ls / inspect / create / connect / disconnect / rmsont vos outils pour gérer ces réseaux facilement.- Pour des configurations avancées, d’autres types de réseau existent (macvlan, host, overlay), mais bridge reste le plus simple pour débuter.
🔹 Note
Cette partie sur les réseaux Docker a été survolée pour vous donner les bases essentielles.
- Certains points peuvent être approfondis via des tutoriels détaillés sur notre site.
- D’autres concepts, comme les réseaux avancés (macvlan, overlay, multi-hôtes), seront abordés dans une formation Docker intermédiaire.
L’objectif ici est de comprendre le fonctionnement général des réseaux bridge et la communication interne, pour pouvoir déployer vos premières stacks en toute sécurité.