Advanced features available in the app
Docker facilite le déploiement d’applications grâce à la conteneurisation, mais pour des applications complexes, la gestion avancée des réseaux Docker devient indispensable. Maîtriser les réseaux Docker avancés permet d’orchestrer la communication entre conteneurs, optimiser la sécurité, la performance et la résilience des systèmes distribués.
Cette fiche aborde les fondamentaux et concepts avancés de réseau Docker, en expliquant comment configurer, personnaliser et étendre les réseaux pour répondre à des besoins exigeants.
Avant de plonger dans l’avancé, rappel rapide :
Docker Network : un ensemble d’interfaces qui connectent les conteneurs entre eux et avec l’extérieur, permettant l’échange de données.
Il s’agit d’un réseau bridge personnalisé créé par l’utilisateur, permettant la création d’un sous-réseau défini :
docker network create \
--driver bridge \
--subnet 192.168.100.0/24 \
mon_reseau_bridge
Ce réseau permet d’isoler les conteneurs et d’attribuer des IP fixes si nécessaire.
Réponse aux architectures distribuées, le réseau overlay permet la communication entre conteneurs sur différents hôtes Docker, notamment avec Docker Swarm ou Kubernetes.
Le réseau Overlay crée un réseau virtuel distribué par-dessus plusieurs hôtes physiques, permettant aux containers de se voir comme s'ils étaient sur un seul réseau local.
Exemple d'utilisation :
docker network create \
--driver overlay \
--attachable \
mon_reseau_overlay
Le driver Macvlan attribue une adresse MAC unique à chaque conteneur sur le réseau physique. Cela permet au conteneur de devenir une entité réseau indépendante visible sur le LAN.
Principe :
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 \
macvlan_reseau
Chaque conteneur possède un namespace réseau séparé, c’est-à-dire un espace isolé comprenant interfaces, routes, règles iptables.
Cela assure que l’état réseau d’un conteneur est indépendant des autres.
Le réseau Docker établit une communication via des ponts (bridge) ou des tunnels pour relier ces namespaces.
Docker utilise iptables pour gérer le NAT et le filtrage de paquets. Les règles créées automatiquement :
Astuce : Pour un contrôle fin, on peut modifier ou ajouter des règles iptables et Docker va les intégrer dans la chaîne de filtrage des conteneurs.
Avec Docker Swarm, les réseaux overlay prennent tout leur sens. Le routage est géré par le routing mesh, qui permet :
[Diagramme]
Docker supporte IPv6 (désactivé par défaut) :
docker daemon --ipv6 --fixed-cidr-v6="2001:db8:1::/64"
Permet d’assigner une IP statique à un conteneur dans un réseau personnalisé :
docker network create --subnet=172.18.0.0/16 mon_reseau
docker run --net mon_reseau --ip 172.18.0.22 mycontainer
Docker fournit un DNS interne qui résout automatiquement le nom de service / conteneur vers leur IP au sein du même réseau.
Docker accepte des plugins CNI (Container Network Interface) comme Calico, Weave, ou Cilium, permettant :
Créer des réseaux dédiés par service ou par environnement pour éviter tout risque de communication illégitime :
docker network create --internal mon_reseau_interne
Pour des scénarios multi-cloud ou multi-datacenters, on peut mettre en place une communication VPN entre hôtes Docker.
On peut ajouter des règles pour restreindre la communication inter-conteneurs via :
Soit un stack avec 3 services (web, API, DB) sur 2 nœuds Swarm :
docker network create -d overlay --subnet=10.10.0.0/24 myoverlay
| Driver | Description | Usage typique | Isolation multi-hôte | IP fixe possible |
|---|---|---|---|---|
| bridge | Réseau local par défaut | Conteneurs sur un hôte unique | Non | Oui |
| host | Partage réseau de l’hôte | Haute perf, pas d’isolation | Non | Oui (direct hôte) |
| overlay | Réseau distribué entre hôtes | Clusters Swarm, multi-host | Oui | Oui |
| macvlan | Connexion direct au réseau physique | Visibilité réseau LAN, IP fixe | Oui | Oui |
| none | Pas de réseau | Conteneurs isolés | N/A | Non |
Pour un réseau [Formule] (CIDR), la taille du réseau [Formule] est donnée par :
[Formule mathématique]
Exemple : Pour un subnet /24 (n=24),
[Formule mathématique]
Maîtriser ces concepts avancés est la clé pour concevoir des systèmes Docker robustes et évolutifs.
Pour aller plus loin : approfondissez la notion de politiques réseau, service mesh (ex : Istio avec Kubernetes) et orchestration multi-cluster.
Bonne révision ! 🚀
