Driver di rete del contenitore Windows

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

Oltre a sfruttare la rete predefinita "nat" creata da Docker in Windows, gli utenti possono definire le 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 seguenti tipi di driver di rete:

Driver di rete NAT

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

Suggerimento

È 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 versione successiva) 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 "transparent" verranno connessi direttamente alla rete fisica tramite un commutatore Hyper-V esterno . Gli indirizzi IP della rete fisica possono essere assegnati in modo statico (richiede l'opzione --subnet specificata dall'utente) o dinamico tramite un server DHCP esterno.

Nota

A causa del requisito seguente, la connessione degli host 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 del contenitore è una macchina virtuale) è necessario lo spoofing degli indirizzi 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 10.244.0.7 DNS e ID 7VLAN:

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

Driver di rete sovrapposto

Usato comunemente dagli 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 overlay 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 .

Richiede: in Windows Server 2019 questo richiede 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, ping ad esempio 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 sovrapposizione con subnet 10.244.0.0/24, server 168.63.129.16DNS e 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 Hyper-V esterno . In l2bridge il traffico di rete del contenitore avrà lo stesso indirizzo MAC dell'host a causa dell'operazione di conversione degli indirizzi di livello 2 (riscrizione 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 a volte 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 10.244.0.7 DNS 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

Suggerimento

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

Driver di rete L2tunnel

La creazione è identica a l2bridge, ma questo driver deve essere usato solo in Microsoft Cloud Stack (Azure). L'unica differenza rispetto a l2bridge è che tutto il traffico dei contenitori viene inviato all'host di virtualizzazione in cui vengono applicati i criteri SDN, abilitando in tal modo funzionalità come i gruppi di sicurezza di rete di Azure per i contenitori.

Topologie di rete e Gestione indirizzi IP

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

Modalità di rete/driver Docker

Driver di rete Di 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 con bridge tramite commutatore virtuale Hyper-V
  • Cross subnet: non supportato (solo un prefisso interno NAT)
Indirizzato tramite la scheda di interfaccia di rete virtuale di gestione (associata a WinNAT) Non supportato direttamente: richiede l'esposizione delle porte tramite host
Modalità trasparente Valido per sviluppatori o distribuzioni di piccole dimensioni
  • Stessa subnet: connessione con bridge tramite commutatore virtuale Hyper-V
  • Cross Subnet: instradato tramite l'host contenitore
Instradato tramite l'host contenitore con accesso diretto alla scheda di rete (fisica) Instradato tramite l'host 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 di rete viene incapsulato e instradato tramite la scheda di interfaccia di rete virtuale Mgmt
Non supportato direttamente: richiede un secondo endpoint contenitore collegato alla rete NAT in Windows Server 2016 o regola NAT VFP in 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
  • Cross Subnet: l'indirizzo MAC del contenitore viene riscritto in ingresso e in uscita e indirizzato
Indirizzo MAC del contenitore riscritto in ingresso e in uscita
  • Stessa subnet: connessione bridged
  • Cross Subnet:routed through Mgmt vNIC on WSv1809 and above
L2Tunnel Solo Azure Stessa/cross subnet: aggiunta di capelli al commutatore virtuale Hyper-V dell'host fisico alla posizione in cui vengono applicati i criteri Il traffico deve passare attraverso il gateway di rete virtuale di Azure Stessa/cross subnet: aggiunta di capelli al commutatore virtuale Hyper-V dell'host fisico alla posizione in cui vengono applicati i criteri

Gestione indirizzi IP

Gli indirizzi IP vengono allocati e assegnati in modo diverso per ogni driver di rete. Windows usa il servizio rete host (HNS, Host Networking Service) per fornire la gestione indirizzi IP per il driver nat e la modalità Docker Swarm (KVS interno) per fornire una gestione indirizzi IP per il driver overlay. Tutti gli altri driver di rete usano una gestione indirizzi IP esterna.

Modalità di rete/Driver Gestione indirizzi IP
NAT Allocazione e assegnazione ip dinamica da parte del servizio di rete host (HNS) dal prefisso della subnet NAT interno
Modalità trasparente Assegnazione e allocazione IP statica o dinamica (tramite server DHCP esterno) da indirizzi IP all'interno del prefisso di rete dell'host contenitore
Sovrapposizione (Overlay) Allocazione IP dinamica da prefissi e assegnazione gestiti in modalità Swarm del motore Docker tramite HNS
L2Bridge Allocazione e assegnazione di indirizzi IP dinamici dal servizio di rete host (HNS) dal prefisso della subnet specificato
L2Tunnel Solo Azure - Allocazione e assegnazione di indirizzi IP dinamici dal plug-in

Individuazione dei servizi

La funzionalità Individuazione dei servizi è supportata solo per determinati driver di rete di Windows.

Nome del driver Individuazione dei servizi locali Individuazione dei servizi globali
nat YES SÌ con Docker EE
overlay YES SÌ con Docker EE o kube-dns
transparent NO NO
l2bridge SÌ con kube-dns SÌ con kube-dns