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.16
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 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:
- La rete L2bridge è configurata con la stessa subnet IP dell'host contenitore
- 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 |
|
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 |
|
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 |
|
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 |
|
Indirizzo MAC del contenitore riscritto in ingresso e in uscita |
|
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Ì | SÌ con Docker EE |
Sovrapposizione | SÌ | SÌ con Docker EE o kube-dns |
trasparente | NO | NO |
l2bridge | Sì con kube-dns | SÌ con kube-dns |