Condividi tramite


Driver di rete dei contenitori Windows

Si applica a: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016

Oltre a sfruttare la rete "nat" predefinita creata da Docker in Windows, gli utenti possono definire reti di contenitori personalizzate. È possibile creare reti definite dall'utente usando il comando dell'interfaccia della riga di comando di Docker docker network create -d <NETWORK DRIVER TYPE> <NAME>. In Windows sono disponibili i tipi di driver di rete seguenti:

Driver di rete NAT

I contenitori collegati a una rete creata con il driver "nat" verranno connessi a un commutatore interno Hyper-V e riceveranno un indirizzo IP dal prefisso IP specificato dall'utente (--subnet). È supportato il port forwarding/mapping dall'host del contenitore agli endpoint del contenitore.

Mancia

È possibile personalizzare la subnet usata dalla rete "nat" predefinita tramite l'impostazione fixed-cidr nel file di configurazione del daemon Docker .

Nota

Le reti NAT create in Windows Server 2019 (o versioni successive) non vengono più mantenute dopo il riavvio.

Creazione di una rete NAT

Per creare una nuova rete NAT con subnet 10.244.0.0/24:

docker network create -d "nat" --subnet "10.244.0.0/24" my_nat

Driver di rete trasparente

I contenitori collegati a una rete creata con il driver "trasparente" verranno connessi direttamente alla rete fisica tramite un commutatore Hyper-V esterno. È possibile assegnare indirizzi IP dalla rete fisica in modo statico (richiede l'opzione di --subnet specificata dall'utente) o in modo dinamico usando un server DHCP esterno.

Nota

A causa del requisito seguente, la connessione degli host del contenitore tramite una rete trasparente non è supportata nelle macchine virtuali di Azure.

Richiede: quando questa modalità viene usata in uno scenario di virtualizzazione (l'host contenitore è una macchina virtuale) è richiesto lo spoofing dell'indirizzo MAC.

Creazione di una rete trasparente

Per creare una nuova rete trasparente con subnet 10.244.0.0/24, gateway 10.244.0.1, server DNS 10.244.0.7 e ID VLAN 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

Sovrimpressione del driver di rete

Comunemente usato da agenti di orchestrazione dei contenitori, ad esempio Docker Swarm e Kubernetes, i contenitori collegati a una rete di sovrapposizione possono comunicare con altri contenitori collegati alla stessa rete tra più host contenitore. Ogni rete di sovrapposizione viene creata con la propria subnet IP, definita da un prefisso IP privato. Il driver di rete di sovrimpressione usa l'incapsulamento VXLAN per ottenere l'isolamento del traffico di rete tra reti contenitore tenant e consente di riutilizzare gli indirizzi IP tra reti sovrapposte.

Richiede: assicurarsi che l'ambiente soddisfi questi prerequisiti necessari per la creazione di reti di sovrapposizione.

Per Windows Server 2019, è richiesto il KB4489899.

Richiede: in Windows Server 2016 è necessario KB4015217.

Nota

In Windows Server 2019 e versioni successive, le reti sovrapposte create da Docker Swarm sfruttano le regole NAT VFP per la connettività in uscita. Ciò significa che un determinato contenitore riceve 1 indirizzo IP. Significa anche che gli strumenti basati su ICMP, ad esempio ping o Test-NetConnection, devono essere configurati usando le opzioni TCP/UDP nelle situazioni di debug.

Creazione di una rete di sovrapposizione

Per creare una nuova rete di sovrimpressione con subnet 10.244.0.0/24, server DNS 168.63.129.16e VSID 4096:

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

Driver di rete L2bridge

I contenitori collegati a una rete creata con il driver 'l2bridge' verranno connessi alla rete fisica tramite un commutatore esterno Hyper-V. In l2bridge, il traffico di rete dei contenitori avrà lo stesso indirizzo MAC dell'host a causa dell'operazione di conversione degli indirizzi di livello-2 (riscrittura MAC) in ingresso e in uscita. Nei data center questo consente di alleviare lo stress sui commutatori che hanno la necessità di apprendere gli indirizzi MAC di contenitori talvolta di breve durata. Le reti L2bridge possono essere configurate in due modi diversi:

  1. La rete L2bridge è configurata con la stessa subnet IP dell'host contenitore
  2. La rete L2bridge è configurata con una nuova subnet IP personalizzata

Nella configurazione 2 gli utenti dovranno aggiungere un endpoint nel raggruppamento di rete host che funge da gateway e configurare le funzionalità di routing per il prefisso designato.

Creazione di una rete l2bridge

Per creare una nuova rete l2bridge con subnet 10.244.0.0/24, gateway 10.244.0.1, server DNS 10.244.0.7 e ID VLAN 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

Consiglio

Le reti L2bridge sono altamente programmabili; Altre informazioni su come configurare l2bridge sono disponibili qui.

Driver di rete L2tunnel

La creazione è identica a l2bridge, tuttavia questo driver dovrebbe essere utilizzato solo in una configurazione di Microsoft Cloud Stack (Azure). L'unica differenza rispetto a l2bridge è che tutto il traffico del contenitore viene inviato all'host di virtualizzazione in cui vengono applicati i criteri SDN, abilitando così funzionalità come i gruppi di sicurezza di rete di Azure per i contenitori.

Topologie di rete e Gestione indirizzi IP

La tabella seguente illustra come viene fornita la connettività di rete per le connessioni interne (da contenitore a contenitore) ed esterne per ogni driver di rete.

Modalità di rete/driver Docker

Driver di rete Windows Docker Usi tipici Da contenitore a contenitore (nodo singolo) Da contenitore a esterno (nodo singolo + multinodo) Da contenitore a contenitore (multinodo)
NAT (impostazione predefinita) Valido per gli sviluppatori
  • Stessa subnet: connessione in bridge tramite switch virtuale Hyper-V
  • Cross subnet: non supportato (solo un prefisso interno NAT)
Instradato tramite l'interfaccia virtuale di gestione (collegata a WinNAT) Non supportato direttamente: richiede l'esposizione delle porte tramite host
trasparente Valido per sviluppatori o distribuzioni di piccole dimensioni
  • Stessa subnet: connessione con bridge tramite commutatore virtuale Hyper-V
  • Tra subnet: instradato tramite l'host contenitore
Instradato tramite l'host contenitore con accesso diretto alla scheda di rete fisica Instradato tramite l'host del contenitore con accesso diretto alla scheda di rete (fisica)
sovrapposizione Buono per il multinodo; obbligatorio per Docker Swarm, disponibile in Kubernetes
  • Stessa subnet: connessione con bridge tramite commutatore virtuale Hyper-V
  • Cross Subnet: il traffico viene incapsulato e instradato tramite l'interfaccia di rete virtuale (vNIC) Mgmt
Non supportato direttamente - richiede un secondo endpoint contenitore collegato alla rete NAT su Windows Server 2016 o una regola NAT VFP su Windows Server 2019. Stessa/cross subnet: il traffico di rete viene incapsulato tramite VXLAN e indirizzato tramite la scheda di interfaccia di rete virtuale Mgmt
L2Bridge Usato per Kubernetes e Microsoft SDN
  • Stessa subnet: connessione con bridge tramite commutatore virtuale Hyper-V
  • Tra le subnet: l'indirizzo MAC del contenitore viene riscritto all'ingresso e all'uscita e viene instradato.
Indirizzo MAC del contenitore riscritto in ingresso e in uscita
  • Stessa Subnet: connessione a ponte
  • Subnet Differente: instradato tramite vNIC di gestione su WSv1809 e versioni successive
L2Tunnel Solo per Azure Subnet/Stessa, Diverse: instradato verso lo switch virtuale Hyper-V dell'host fisico dove viene applicata la policy. Il traffico deve passare attraverso il gateway di rete virtuale di Azure Stessa/Attraverso Sottorete: incatenato al commutatore virtuale Hyper-V dell'host fisico dove viene applicata la politica.

Gestione indirizzi IP

Gli indirizzi IP vengono allocati e assegnati in modo diverso per ogni driver di rete. Windows utilizza l'Host Networking Service (HNS) per fornire IPAM per il driver NAT e funziona con Docker Swarm Mode (KVS interna) per fornire IPAM per la rete overlay. Tutti gli altri driver di rete usano un IPAM esterno.

Modalità di rete/Driver IPAM
NAT Allocazione e assegnazione IP dinamica da parte del Servizio di Rete Host (HNS) dal prefisso della subnet NAT interna
Trasparente Allocazione IP statica o dinamica (tramite server DHCP esterno) e assegnazione da indirizzi IP appartenenti al prefisso di rete dell'host del contenitore
Sovrapposizione Allocazione IP dinamica da prefissi gestiti in modalità Swarm del motore Docker e assegnazione tramite HNS
L2Bridge Allocazione e assegnazione di indirizzi IP dinamici da parte del servizio di rete host (HNS) con il prefisso della subnet specificato
L2Tunnel Solo Azure - Allocazione e assegnazione di indirizzi IP dinamici dal plug-in

Individuazione dei servizi

L'individuazione dei servizi è supportata solo per determinati driver di rete di Windows.

Nome conducente Individuazione del servizio locale Individuazione globale dei servizi
NAT SÌ con Docker EE
Sovrapposizione SÌ con Docker EE o kube-dns
trasparente NO NO
l2bridge Sì con kube-dns SÌ con kube-dns