Il y a quelques jours, je cherchais désespérément comment un container docker pouvait avoir accès à l’intégralité de mon réseau pour gérer un ping de présence.
J’ai donc cherché dans la config Networks de docker. Je ne mettais jamais posé la question de savoir s’il existait d’autres méthodes que « Bridge ».
Pour ceux que cela intéresse, voici les différents types de réseaux de Docker
Host
Ce réseau permet à un conteneur d’utiliser directement le réseau de l’hôte, sans recourir à la virtualisation réseau de Docker, en utilisant directement l’adresse IP de l’hôte. Chaque Container est accessible en tapant l’adresse de l’hôte, et le port qui lui est associé.
Bridge
Ce type de réseau est utilisé par défaut lorsque vous ne précisez pas de réseau particulier. Il permet aux conteneurs de communiquer entre eux sur le même hôte grâce a des adresses IP spécifiques à chaque Bridge.
Le bridge se comporte donc que un switch virtuel permettant de faire communiquer les containers qui sont sur ce bridge, tout en les isolants des autres réseaux présents sur l’hôte Docker.
L’hôte se comporte comme un routeur, via des ports spécifiques à chaque conteneur, pour les sorties et entrées vers les Bridge.
MacVlan
Ce réseau attribue à chaque conteneur une adresse MAC unique, permettant au conteneur de fonctionner comme un périphérique réseau distinct sur le réseau physique.
Le container possède donc sa propre mac address, permettant ainsi de lui donner une IP dans le lan, sans faire de translation réseau comme pour le Bridge.
IpVlan
Ce réseau permet aux conteneurs de partager l’interface réseau de l’hôte, tout en attribuant une adresse IP distincte à chaque conteneur, en utilisant l’adresse MAC de l’hôte pour simplifier la gestion des adresses.
Le réseau Ipvlan est une version alternative de Macvlan, permettant aussi aux conteneurs de partager l’interface réseau de l’hôte. Cependant, à la différence de Macvlan, Ipvlan utilise l’adresse MAC de l’hôte et génère des interfaces IP distinctes pour chaque conteneur.
Overlay
Ce réseau connecte des conteneurs situés sur différents hôtes, idéal pour les clusters Docker Swarm ou Kubernetes par exemple.
On peut ainsi relié plusieurs hôte docker dans un même réseau distribué sécurisé pour faire communiquer des containers ensemble, même s’ils sont sur des hôtes différents. Le réseau se comporte après comme un bridge.
None
Ce type de réseau désactive toute connectivité pour un conteneur, l’isolant complètement du système et du réseau externe. Pas de réseau, pas de communication extérieur