Les réseaux Docker

Qui parle à qui

reseau-docker
Philippe Escalle CTO

Docker, c'est un peu comme une colocation bien organisée : chaque conteneur est un colocataire qui a son propre espace, mais doit aussi parfois échanger avec les autres. Et comme dans toute bonne colocation, la communication est clé : qui peut parler à qui, par quel canal, et surtout, sans déranger le voisinage ?

Heureusement, Docker a tout prévu avec son système de réseaux. Ici, pas de Wi-Fi capricieux ni de messages sur le frigo pour rappeler de racheter du lait : chaque conteneur peut communiquer de manière sécurisée et efficace grâce à différentes options de réseau.

Les différents réseaux Docker : qui vit où ?

Docker propose plusieurs types de réseaux, chacun adapté à un style de communication. Imagine que les conteneurs sont des habitants d’un immeuble, et chaque réseau correspond à une façon dont ils peuvent interagir.

Le réseau Bridge (par défaut) : comme la bonne vielle résidence universitaire

Par défaut, Docker place tous ses nouveaux conteneurs sur un réseau bridge (docker0). C'est comme une résidence universitaire : tout le monde est sur le même palier, peut se parler via une adresse IP locale, mais pas de service de conciergerie : impossible de se retrouver par nom !

Tu peux crier “container1 !” dans le couloir, personne ne répondra… tu peux crier aussi ca dans le couleur de ta résidence universitaire et personne ne te répondra ici aussi ! mais avec l’IP, ça fonctionne.

Le réseau Bridge personnalisé : le quartier des pavillons

Si le bridge par défaut est une résidence impersonnelle, un réseau bridge personnalisé est comme un quartier bien organisé. Ici, chaque maison a un numéro ET une boîte aux lettres avec son nom. Les conteneurs peuvent enfin se parler par nom, grâce à la résolution DNS de Docker.

Container1 peut enfin envoyer un “Coucou Container2” et être entendu !

Ok, mais du coup, pourquoi ca serait mieux ?
Tout simplement car les conteneurs peuvent se contacter par leur nom (fini les IPs à rallonge). En plus, tu peux organiser des quartiers distincts (base de données d’un côté, backend de l’autre) et surtout plus de contrôle : tu peux choisir des sous-réseaux, des règles de pare-feu, etc.

docker network create my-custom-bridge
docker run --name container1 --network my-custom-bridge my-image
docker run --name container2 --network my-custom-bridge my-image

Ici, container1 peut simplement faire ping container2 ! et ça c'est cool.

Le réseau Host : vivre en coloc’ sans mur (ouais c'est l'open space quoi)
Ce mode, c'est comme partager un appart sans chambres séparées : pas d’isolation, tout le monde est directement sur le réseau de l’hôte.
Perso, la sécurité en prend un coup car ton conteneur peut voir tout le réseau de l’hôte et ne fonctionne pas sur Windows et macOS.

docker run --network host my-image

Le réseau Overlay : le VPN des conteneurs sur plusieurs machines

Ce réseau est utilisé dans Docker Swarm et permet à des conteneurs sur plusieurs hôtes de communiquer comme s'ils étaient sur le même réseau local.

docker swarm init
docker network create --driver overlay my-overlay-network

Le réseau Macvlan : le camouflage ninja

Avec Macvlan, chaque conteneur obtient sa propre adresse MAC et IP sur le réseau physique, comme s'il était un vrai PC. Mais l’hôte lui-même ne peut pas parler aux conteneurs sur ce réseau !

docker network create -d macvlan --subnet=192.168.1.0/24 my-macvlan

Le réseau None : l’ermite du Docker

Parfait pour ceux qui veulent vivre coupé du monde. Un conteneur sur le réseau none n'a AUCUNE connexion réseau, même pas avec l’hôte.

docker run --rm --network none alpine ping google.com


L'oeil du CTO

" En tant que CTO, choisir la bonne architecture réseau pour vos conteneurs Docker, c’est comme définir l’urbanisme de votre infrastructure. Un mauvais choix peut mener à des goulots d’étranglement, des failles de sécurité, ou une gestion complexe des flux entre services. Une architecture réseau bien pensée est un levier de résilience et d’agilité pour les équipes DevOps "