Table des matières
- Étape 1 — Afficher les réseaux Docker disponibles
- Étape 2 — Comprendre les réseaux bridge, host et none
- Étape 3 — Créer un conteneur sur le réseau bridge
- Étape 4 — Inspecter le réseau bridge
- Étape 5 — Créer un réseau Docker personnalisé
- Étape 6 — Inspecter le réseau personnalisé
- Étape 7 — Créer deux conteneurs sur le même réseau
- Étape 8 — Vérifier les conteneurs connectés au réseau
- Étape 9 — Installer la commande ping
- Étape 10 — Tester la communication entre les conteneurs
- Étape 11 — Créer un serveur Nginx et publier son port
- Étape 12 — Tester Nginx depuis un autre conteneur
- Étape 13 — Connecter un conteneur à un deuxième réseau
- Conclusion
Les réseaux Docker permettent aux conteneurs de communiquer entre eux, avec la machine hôte et, lorsque cela est nécessaire, avec Internet.
Lorsqu’une application utilise plusieurs conteneurs, par exemple un serveur web, une application et une base de données, les réseaux Docker permettent de relier ces différents services tout en contrôlant leurs communications.
Dans ce tutoriel, vous allez apprendre à afficher les réseaux Docker, comprendre les principaux types de réseaux, créer un réseau personnalisé, connecter plusieurs conteneurs, tester leur communication et publier un service sur la machine hôte.
Étape 1 — Afficher les réseaux Docker disponibles
Docker crée automatiquement plusieurs réseaux lors de son installation.
Pour afficher la liste des réseaux disponibles sur votre machine, exécutez la commande suivante :
docker network ls
Vous devriez obtenir un résultat similaire à celui-ci :

La colonne NETWORK ID affiche l’identifiant unique de chaque réseau.
La colonne NAME affiche le nom du réseau, tandis que la colonne DRIVER indique le pilote utilisé.
La colonne SCOPE indique la portée du réseau. La valeur local signifie que le réseau est disponible uniquement sur la machine Docker actuelle.
Docker crée automatiquement les réseaux bridge, host et none.
Étape 2 — Comprendre les réseaux bridge, host et none
Le réseau bridge est le réseau utilisé par défaut par Docker. Lorsqu’un conteneur est créé sans préciser de réseau, Docker le connecte automatiquement à ce réseau.
Le réseau host permet à un conteneur d’utiliser directement le réseau de la machine hôte. Le conteneur ne possède alors pas sa propre adresse IP Docker distincte.
Le réseau none désactive les communications réseau du conteneur. Un conteneur connecté à ce réseau ne peut pas communiquer avec Internet ni avec les autres conteneurs.
Le tableau suivant résume leur fonctionnement :
|
Réseau |
Fonctionnement |
|
bridge |
Le conteneur utilise le réseau Docker par défaut. |
|
host |
Le conteneur utilise directement le réseau de la machine hôte. |
|
none |
Le conteneur ne possède aucune connexion réseau classique. |
Dans ce tutoriel, nous utiliserons principalement un réseau personnalisé utilisant le pilote bridge.
Étape 3 — Créer un conteneur sur le réseau bridge
Créez un conteneur Ubuntu sans préciser de réseau :
docker run -dit --name ubuntu-bridge ubuntu:24.04
L’option -d permet de lancer le conteneur en arrière-plan.
L’option -i conserve l’entrée standard ouverte, tandis que l’option -t crée un terminal virtuel.
Comme aucun réseau n’est précisé, Docker connecte automatiquement le conteneur au réseau bridge.
Vérifiez que le conteneur fonctionne avec la commande suivante :
docker ps
Vous devriez obtenir un résultat similaire à celui-ci :

Le statut Up indique que le conteneur est actuellement en fonctionnement.
Vous pouvez afficher son réseau et son adresse IP avec la commande suivante :
docker inspect \
-f '{{json .NetworkSettings.Networks}}' \
ubuntu-bridge
Vous devriez obtenir un résultat similaire à celui-ci :
Cette
information confirme que le conteneur est connecté au réseau bridge.
Étape 4 — Inspecter le réseau bridge
La commande docker network inspect permet d’afficher les informations détaillées d’un réseau Docker.
Pour inspecter le réseau bridge, exécutez la commande suivante :
docker network inspect bridge
Vous devriez obtenir un résultat contenant des informations similaires à celles-ci :

La valeur Subnet correspond au sous-réseau utilisé pour attribuer des adresses IP aux conteneurs.
La valeur Gateway correspond à la passerelle utilisée par les conteneurs pour sortir du réseau Docker.
Les adresses affichées peuvent être différentes sur votre machine.
Étape 5 — Créer un réseau Docker personnalisé
Pour faire communiquer plusieurs conteneurs, il est recommandé de créer un réseau Docker personnalisé.
Les réseaux personnalisés possèdent un système DNS interne. Grâce à ce système, les conteneurs peuvent communiquer en utilisant leur nom plutôt que leur adresse IP.
Créez un réseau nommé reseau_sysnettuto avec la commande suivante :
docker network create reseau_sysnettuto
Docker affiche une longue chaîne de caractères similaire à celle-ci :
286fa86f98570ebcbf2ad9b80fdc6307ceff169bf828947d8eaa07f54de89471
Cette chaîne correspond à l’identifiant unique du réseau.
Vérifiez ensuite la création du réseau :
docker network ls
Vous devriez maintenant trouver le réseau reseau_sysnettuto dans la liste :

Docker utilise automatiquement le pilote bridge lorsqu’aucun autre pilote n’est précisé.
Étape 6 — Inspecter le réseau personnalisé
Pour afficher la configuration du réseau reseau_sysnettuto, exécutez la commande suivante :
docker network inspect reseau_sysnettuto
Vous devriez obtenir un résultat similaire à celui-ci :

La valeur Subnet indique le sous-réseau attribué au réseau Docker.
La valeur Gateway indique la passerelle utilisée par les conteneurs.
La section Containers est vide, car aucun conteneur n’est encore connecté au réseau.
Étape 7 — Créer deux conteneurs sur le même réseau
Créez un premier conteneur Ubuntu nommé ubuntu-client :
docker run -dit \
--name ubuntu-client \
--network reseau_sysnettuto \
ubuntu:24.04
Créez ensuite un deuxième conteneur nommé ubuntu-serveur :
docker run -dit \
--name ubuntu-serveur \
--network reseau_sysnettuto \
ubuntu:24.04
L’option --network reseau_sysnettuto connecte directement les deux conteneurs au réseau personnalisé.
Affichez les conteneurs actifs :
docker ps
Vous devriez obtenir un résultat similaire à celui-ci :
Les deux
conteneurs sont maintenant actifs et connectés au même réseau.
Étape 8 — Vérifier les conteneurs connectés au réseau
Inspectez de nouveau le réseau reseau_sysnettuto :
docker network inspect reseau_sysnettuto
La section Containers doit maintenant contenir les deux conteneurs :

Docker attribue automatiquement une adresse IP à chaque conteneur connecté au réseau.
Les adresses IP affichées peuvent être différentes sur votre machine.
Ces adresses peuvent également changer lorsque les conteneurs sont supprimés puis recréés. Il est donc préférable d’utiliser le nom des conteneurs pour les communications.
Étape 9 — Installer la commande ping
L’image Ubuntu ne contient pas obligatoirement la commande ping.
Installez directement le paquet iputils-ping dans le conteneur ubuntu-client avec les commandes suivantes :
docker exec ubuntu-client apt update
docker exec ubuntu-client apt install -y iputils-ping
La première commande met à jour la liste des paquets disponibles.
La deuxième commande installe le paquet contenant la commande ping.
L’option -y permet d’accepter automatiquement la confirmation demandée pendant l’installation.
Vous devriez obtenir un résultat se terminant par une ligne similaire à celle-ci :

La commande ping est maintenant disponible dans le conteneur ubuntu-client.
Étape 10 — Tester la communication entre les conteneurs
Depuis la machine hôte, exécutez la commande suivante :
docker exec ubuntu-client ping -c 4 ubuntu-serveur
La commande docker exec permet d’exécuter une commande dans un conteneur déjà actif.
L’option -c 4 demande à la commande ping d’envoyer quatre paquets avant de s’arrêter.
Vous devriez obtenir un résultat similaire à celui-ci :
La ligne 4
received indique que les quatre paquets ont bien été reçus.
La valeur 0% packet loss confirme qu’aucun paquet n’a été perdu.
Docker a automatiquement retrouvé l’adresse IP de ubuntu-serveur grâce à son nom. Ce fonctionnement est possible grâce au système DNS interne des réseaux Docker personnalisés.
Étape 11 — Créer un serveur Nginx et publier son port
Les conteneurs connectés au même réseau peuvent communiquer directement entre eux.
Cependant, pour accéder à une application depuis la machine hôte ou depuis un navigateur, il faut publier le port du conteneur.
Créez un conteneur Nginx connecté au réseau reseau_sysnettuto :
docker run -d \
--name serveur-nginx \
--network reseau_sysnettuto \
-p 8080:80 \
nginx
L’option -p 8080:80 associe le port 8080 de la machine hôte au port 80 du conteneur.
Le premier numéro correspond au port de la machine hôte, tandis que le deuxième numéro correspond au port utilisé à l’intérieur du conteneur.
Vérifiez que le conteneur fonctionne :
docker ps
Vous devriez trouver une ligne similaire à celle-ci :
La partie
8080->80 confirme que le port 8080 de la machine hôte est redirigé vers le
port 80 du conteneur.
Ouvrez ensuite l’adresse suivante dans votre navigateur :
http://localhost:8080
La page d’accueil de Nginx doit apparaître.

Étape 12 — Tester Nginx depuis un autre conteneur
Le conteneur serveur-nginx est connecté au même réseau que le conteneur ubuntu-client.
Le conteneur ubuntu-client peut donc contacter Nginx en utilisant directement le nom serveur-nginx.
Installez la commande curl dans le conteneur ubuntu-client :
docker exec ubuntu-client apt update
docker exec ubuntu-client apt install -y curl

Testez ensuite l’accès au serveur Nginx :
docker exec ubuntu-client curl http://serveur-nginx
Vous devriez obtenir le code HTML de la page d’accueil de Nginx :

Pour la communication entre les conteneurs, le port 80 est utilisé directement.
Le port 8080 est uniquement utilisé pour accéder au conteneur depuis la machine hôte.
Les deux accès sont donc différents :
Depuis un autre conteneur : http://serveur-nginx
Depuis la machine hôte : http://localhost:8080
Étape 13 — Connecter un conteneur à un deuxième réseau
Un même conteneur peut être connecté à plusieurs réseaux Docker.
Créez un deuxième réseau nommé reseau_secondaire :
docker network create reseau_secondaire

Connectez ensuite le conteneur ubuntu-client à ce réseau :
docker network connect reseau_secondaire ubuntu-client
La commande ne produit aucun résultat lorsqu’elle fonctionne correctement.
Affichez les réseaux du conteneur :
docker inspect \
-f '{{json
.NetworkSettings.Networks}}' \
ubuntu-client
Vous devriez obtenir un résultat similaire à celui-ci :
Le conteneur
possède une adresse IP différente sur chaque réseau.
Cette configuration permet à un conteneur de communiquer avec des services présents sur plusieurs réseaux distincts.
Pour déconnecter le conteneur du réseau secondaire, exécutez la commande suivante :
docker network disconnect reseau_secondaire ubuntu-client
La déconnexion d’un réseau n’arrête pas le conteneur. Elle supprime uniquement son accès au réseau indiqué.
Étape 14 — Comprendre l’isolation avec plusieurs réseaux
L’utilisation de plusieurs réseaux permet d’isoler les différents services d’une application.
Une application peut, par exemple, contenir un frontend, un backend et une base de données.
Le frontend peut être connecté à un réseau public et à un réseau privé.
Le backend et la base de données peuvent uniquement être connectés au réseau privé.
Cette architecture peut être représentée de la manière suivante :

Dans cette organisation, la base de données n’est pas directement accessible depuis Internet.
La séparation des réseaux améliore la sécurité, car chaque conteneur peut uniquement communiquer avec les services présents sur les mêmes réseaux.
Docker permet également de créer un réseau interne avec la commande suivante :
docker network create --internal reseau_interne

Les conteneurs connectés à ce réseau peuvent communiquer entre eux, mais ils ne peuvent normalement pas accéder directement à Internet.
Ce type de réseau peut être utilisé pour une base de données ou un service interne.
Étape 15 — Supprimer les conteneurs et les réseaux du tutoriel
Vous pouvez supprimer les conteneurs et les réseaux créés pendant le tutoriel en une seule étape.
Commencez par supprimer les conteneurs :
docker rm -f \
ubuntu-bridge \
ubuntu-client \
ubuntu-serveur \
serveur-nginx
L’option -f permet d’arrêter puis de supprimer les conteneurs encore actifs.
Docker affiche le nom de chaque conteneur supprimé :
Supprimez
ensuite les réseaux personnalisés :
docker network rm \
reseau_sysnettuto \
reseau_secondaire \
reseau_interne
Docker affiche le nom de chaque réseau supprimé :

Si le réseau reseau_interne n’a pas été créé pendant le tutoriel, Docker indiquera simplement qu’il ne le trouve pas.
Docker refuse de supprimer un réseau lorsqu’un conteneur y est encore connecté. Il faut donc toujours supprimer les conteneurs avant de supprimer leurs réseaux.
Les réseaux automatiques bridge, host et none ne doivent pas être supprimés.
Vous pouvez également supprimer tous les réseaux personnalisés inutilisés avec la commande suivante :
docker network prune
Docker demande une confirmation :

Les réseaux automatiques bridge, host et none ne sont pas supprimés par cette commande.
Conclusion
Les réseaux Docker permettent d’organiser les communications entre les différents conteneurs d’une application.
Le réseau bridge est utilisé par défaut par Docker. Le réseau host permet à un conteneur d’utiliser directement le réseau de la machine hôte, tandis que le réseau none désactive ses communications réseau.
Pour une application composée de plusieurs conteneurs, il est recommandé de créer un réseau personnalisé. Ce type de réseau permet aux conteneurs de communiquer grâce à leur nom sans devoir connaître leurs adresses IP.
La publication d’un port permet de rendre une application accessible depuis la machine hôte. La connexion d’un conteneur à plusieurs réseaux permet, quant à elle, de relier plusieurs parties d’une application tout en conservant une séparation entre les services.
Vous savez maintenant afficher les réseaux Docker, créer un réseau personnalisé, connecter plusieurs conteneurs, tester leur communication, publier un service et supprimer les ressources devenues inutiles.
Commentaires
Laisser un commentaire
Soyez le premier à commenter cet article !