Pilotes de réseau de conteneurs Windows
S’applique à : Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016
Outre l’utilisation du réseau « nat » par défaut créé par Docker sur Windows, les utilisateurs peuvent définir des réseaux de conteneurs personnalisés. Vous pouvez créer des réseaux définis par l’utilisateur à l’aide de la commande Docker CLI docker network create -d <NETWORK DRIVER TYPE> <NAME>
. Sur Windows, les types de pilotes réseau suivants sont disponibles :
Pilote réseau NAT
Les conteneurs attachés à un réseau créé avec le pilote « nat » sont connectés à un commutateur de Hyper-V interne et reçoivent une adresse IP du préfixe IP spécifié par l’utilisateur (--subnet
). Le transfert /mappage de port de l’hôte de conteneur aux points de terminaison de conteneur est pris en charge.
Conseil
Il est possible de personnaliser le sous-réseau utilisé par le réseau « nat » par défaut via le paramètre fixed-cidr
dans le fichier de configuration du démon Docker .
Note
Les réseaux NAT créés sur Windows Server 2019 (ou version ultérieure) ne sont plus conservés après le redémarrage.
Création d’un réseau NAT
Pour créer un réseau NAT avec un sous-réseau 10.244.0.0/24
:
docker network create -d "nat" --subnet "10.244.0.0/24" my_nat
Pilote réseau transparent
Les conteneurs attachés à un réseau créé avec le pilote « transparent » sont directement connectés au réseau physique via un commutateur de Hyper-V externe. Les adresses IP du réseau physique peuvent être affectées statiquement (nécessite l’option --subnet
spécifiée par l’utilisateur) ou dynamiquement à l’aide d’un serveur DHCP externe.
Note
En raison de l’exigence suivante, la connexion de vos hôtes de conteneur sur un réseau transparent n’est pas prise en charge sur les machines virtuelles Azure.
Nécessite : lorsque ce mode est utilisé dans un scénario de virtualisation (l’hôte de conteneur est une machine virtuelle) l'usurpation d’adresses MAC est nécessaire.
Création d’un réseau transparent
Pour créer un réseau transparent avec 10.244.0.0/24
de sous-réseau, 10.244.0.1
de passerelle, 10.244.0.7
de serveur DNS et ID de réseau local virtuel 7
:
docker network create -d "transparent" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_transparent
Pilote de réseau superposé
Couramment utilisés par les orchestrateurs de conteneurs tels que Docker Swarm et Kubernetes, les conteneurs attachés à un réseau de superposition peuvent communiquer avec d’autres conteneurs attachés au même réseau sur plusieurs hôtes de conteneurs. Chaque réseau de superposition est créé avec son propre sous-réseau IP, défini par un préfixe d’adresse IP privée. Le pilote réseau de superposition utilise l’encapsulation VXLAN pour assurer l’isolation du trafic réseau entre les réseaux de conteneurs de locataires et permet de réutiliser les adresses IP entre les réseaux de superposition.
Nécessite : assurez-vous que votre environnement répond à ces conditions préalables requises pour créer des réseaux de superposition.
Nécessite : sur Windows Server 2019, cela nécessite KB4489899.
Nécessite : sur Windows Server 2016, cela nécessite KB4015217.
Note
Sur Windows Server 2019 et versions ultérieures, les réseaux de superposition créés par Docker Swarm tirent parti des règles NAT VFP pour la connectivité sortante. Cela signifie qu’un conteneur donné reçoit 1 adresse IP. Cela signifie également que les outils ICMP tels que ping
ou Test-NetConnection
doivent être configurés à l’aide de leurs options TCP/UDP dans les situations de débogage.
Création d’un réseau de superposition
Pour créer un réseau de superposition avec un sous-réseau 10.244.0.0/24
, un serveur DNS 168.63.129.16
et un 4096
VSID :
docker network create -d "overlay" --attachable --subnet "10.244.0.0/24" -o com.docker.network.windowsshim.dnsservers="168.63.129.16" -o com.docker.network.driver.overlay.vxlanid_list="4096" my_overlay
Pilote réseau L2bridge
Les conteneurs attachés à un réseau créé avec le pilote « l2bridge » sont connectés au réseau physique par le biais d’un commutateur de Hyper-V externe. Dans l2bridge, le trafic réseau de conteneurs aura la même adresse MAC que l’hôte en raison de l’opération de traduction d’adresses de couche 2 (réécriture MAC) sur l’entrée et la sortie. Dans les centres de données, cela permet de réduire le stress sur les commutateurs qui doivent apprendre des adresses MAC de conteneurs parfois de courte durée. Les réseaux L2bridge peuvent être configurés de deux façons différentes :
- Le réseau L2bridge est configuré avec le même sous-réseau IP que l’hôte de conteneur
- Le réseau L2bridge est configuré avec un nouveau sous-réseau IP personnalisé
Dans la configuration 2, les utilisateurs devront ajouter un point de terminaison sur le compartiment réseau hôte qui agit en tant que passerelle et configurer les fonctionnalités de routage pour le préfixe désigné.
Création d’un réseau l2bridge
Pour créer un réseau l2bridge avec un sous-réseau 10.244.0.0/24
, une passerelle 10.244.0.1
, un serveur DNS 10.244.0.7
et un ID de réseau local virtuel 7 :
docker network create -d "l2bridge" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_l2bridge
Conseil
Les réseaux L2bridge sont hautement programmables ; Vous trouverez plus d’informations sur la configuration de l2bridge ici.
Pilote réseau L2tunnel
La création est identique à l2bridge, mais ce pilote ne doit être utilisé que dans un Microsoft Cloud Stack (Azure). La seule différence par rapport à l2bridge est que tout le trafic de conteneur est envoyé à l’hôte de virtualisation où la stratégie SDN est appliquée, ce qui permet d’activer des fonctionnalités telles que groupes de sécurité réseau Azure pour les conteneurs.
Topologies réseau et IPAM
Le tableau ci-dessous montre comment la connectivité réseau est fournie pour les connexions internes (conteneur à conteneur) et externes pour chaque pilote réseau.
Modes de mise en réseau/pilotes Docker
Pilote réseau Docker Windows | Utilisations classiques | Conteneur à conteneur (nœud unique) | Conteneur vers l'extérieur (nœud unique + multi-nœuds) | Conteneur à conteneur (à plusieurs nœuds) |
---|---|---|---|---|
NAT (par défaut) | Bon pour les développeurs |
|
Routé via la carte réseau virtuelle de gestion (liée à WinNAT) | Pas directement pris en charge : nécessite l'ouverture des ports via l'hôte. |
Transparent | Bon pour les développeurs ou les petits déploiements |
|
Routé par l’hôte de conteneur avec un accès direct à l'adaptateur réseau (physique) | Acheminé par l'hôte de conteneur avec un accès direct à l'adaptateur réseau physique. |
Superposition | Bon pour plusieurs nœuds ; requis pour Docker Swarm, disponible dans Kubernetes |
|
Non directement pris en charge : nécessite un deuxième point de terminaison de conteneur attaché au réseau NAT sur Windows Server 2016 ou une règle NAT VFP sur Windows Server 2019. | Même/sous-réseau croisé : le trafic réseau est encapsulé à l’aide de VXLAN et routé via la carte réseau virtuelle Mgmt |
L2Bridge | Utilisé pour Kubernetes et Microsoft SDN |
|
Adresse MAC du conteneur réécrite en entrée et sortie |
|
L2Tunnel | Azure uniquement | Même/croisement de sous-réseaux : redirigé vers le commutateur virtuel Hyper-V de l'hôte physique où la stratégie est appliquée. | Le trafic doit passer par la passerelle de réseau virtuel Azure | Même/croisement de sous-réseaux : redirigé vers le commutateur virtuel Hyper-V de l'hôte physique où la stratégie est appliquée. |
IPAM
Les adresses IP sont allouées et affectées différemment pour chaque pilote réseau. Windows utilise le service de mise en réseau hôte (HNS) pour proposer IPAM pour le pilote 'nat' et opère avec le mode Docker Swarm (KVS interne) pour proposer IPAM pour les réseaux superposés. Tous les autres pilotes réseau utilisent un IPAM externe.
Mode mise en réseau / Pilote | IPAM |
---|---|
NAT | Allocation et affectation d’adresses IP dynamiques par le service de mise en réseau hôte (HNS) à partir du préfixe de sous-réseau NAT interne |
Transparent | Allocation et affectation d’adresses IP statiques ou dynamiques (à l’aide d’un serveur DHCP externe) à partir d’adresses IP au sein du préfixe réseau de l’hôte de conteneur |
Superposition | Allocation d’adresses IP dynamiques à partir des préfixes managés en mode Swarm du moteur Docker et de l’affectation via HNS |
L2Bridge | Allocation et affectation d’adresses IP dynamiques par le service de mise en réseau hôte (HNS) à partir du préfixe de sous-réseau fourni |
L2Tunnel | Azure uniquement - Allocation et affectation d’adresses IP dynamiques à partir du plug-in |
Découverte de services
La découverte de services est prise en charge uniquement pour certains pilotes réseau Windows.
Nom du pilote | Découverte de services locaux | Découverte de services globaux |
---|---|---|
nat | OUI | OUI avec Docker EE |
superposition | OUI | OUI avec Docker EE ou kube-dns |
transparent | NON | NON |
l2bridge | OUI avec kube-dns | OUI avec kube-dns |