Partager via


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/24de sous-réseau, 10.244.0.1de 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.16et un 4096VSID :

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 :

  1. Le réseau L2bridge est configuré avec le même sous-réseau IP que l’hôte de conteneur
  2. 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
  • Même sous-réseau : connexion en pont via le commutateur virtuel Hyper-V
  • Sous-réseau croisé : non pris en charge (un seul préfixe interne NAT)
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
  • Même sous-réseau : connexion en pont via le commutateur virtuel Hyper-V
  • Sous-réseau croisé : routé via l’hôte de conteneur
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
  • Même sous-réseau : connexion en pont via le commutateur virtuel Hyper-V
  • Sous-réseau croisé : le trafic réseau est encapsulé et routé via l'interface réseau virtuelle de gestion (vNIC)
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
  • Même sous-réseau : connexion en pont via le commutateur virtuel Hyper-V
  • Sous-réseau croisé : adresse MAC du conteneur réécrite à l'entrée et à la sortie et routée
Adresse MAC du conteneur réécrite en entrée et sortie
  • Même sous-réseau : connexion pontée
  • Sous-réseau croisé : routé via la carte réseau virtuelle Mgmt sur WSv1809 et versions ultérieures
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