Comprendre les réseaux Docker

AL
Abdallah LISSER
17/09/2026
12 min de lecture
95 vues
Comprendre les réseaux Docker

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

0 / 2500 caractères
* Champs obligatoires. Votre commentaire sera publié immédiatement.

Soyez le premier à commenter cet article !

Image agrandie