Rete di contenitori di Windows
Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016
Importante
Fare riferimento a Docker Container Networking (Rete contenitore Docker) per comandi, opzioni e sintassi di rete Docker generali. Ad eccezione di tutti i casi descritti in funzionalità e opzioni di rete non supportate, tutti i comandi di rete Docker sono supportati in Windows con la stessa sintassi di in Linux. Tuttavia, gli stack di rete Windows e Linux sono diversi e, di conseguenza, si noterà che alcuni comandi di rete Linux (ad esempio, ifconfig
) non sono supportati in Windows.
Architettura di rete di base
Questo argomento offre una panoramica del modo in cui Docker crea e gestisce le reti host in Windows. I contenitori di Windows funzionano in modo analogo alle macchine virtuali per quanto riguarda la rete. Ogni contenitore ha una scheda di rete virtuale (vNIC) connessa a un commutatore virtuale Hyper-V (vSwitch). Windows supporta cinque diversi driver di rete o modalità che possono essere creati tramite Docker: nat, overlay, transparent, l2bridge e l2tunnel. A seconda dell'infrastruttura di rete fisica e dei requisiti di rete con host singolo vs multiplo, è consigliabile scegliere il driver di rete più adatto alle proprie esigenze.
La prima volta che viene eseguito il motore Docker, verrà creata una rete NAT predefinita, "nat", che usa un vSwitch interno e un componente Windows denominato WinNAT
. Se sono presenti vSwitches esterne preesistenti nell'host che sono state create tramite PowerShell o La console di gestione di Hyper-V, saranno disponibili anche per Docker usando il driver di rete trasparente e possono essere visualizzate quando si esegue il docker network ls
comando.
- Un vSwitch interno è uno che non è connesso direttamente a una scheda di rete nell'host contenitore.
- Un vSwitch esterno è uno connesso direttamente a una scheda di rete nell'host contenitore.
La rete 'nat' è la rete predefinita per i contenitori in esecuzione in Windows. Tutti i contenitori eseguiti in Windows senza flag o argomenti per implementare configurazioni di rete specifiche verranno collegati alla rete "nat" predefinita e assegnato automaticamente un indirizzo IP dall'intervallo IP del prefisso interno della rete 'nat'. Il prefisso IP interno predefinito usato per 'nat' è 172.16.0.0/16.
Gestione della rete dei contenitori con il servizio di rete host
Il servizio di rete host (HNS) e il servizio di calcolo host interagiscono per creare contenitori e collegare endpoint a una rete. È possibile interagire con HNS tramite il modulo helper di PowerShell HNS.
Creazione di rete
- HNS crea un commutatore virtuale Hyper-V per ogni rete
- HNS crea pool NAT e IP in base alle esigenze
Creazione dell'endpoint
- HNS crea lo spazio dei nomi di rete per ogni endpoint contenitore
- HNS/HCS posiziona v(m)NIC all'interno dello spazio dei nomi di rete
- HNS crea porte (vSwitch)
- HNS assegna l'indirizzo IP, le informazioni DNS, le route e così via (soggetto alla modalità di rete) all'endpoint
Creazione di criteri
- Per la rete NAT (Network Address Translation) predefinita, HNS crea le regole di inoltro delle porte WinNAT e i mapping con le regole ALLOW di Windows Firewall corrispondenti.
- Per tutte le altre reti, HNS usa virtual filtering platform (VFP) per la creazione di criteri che include bilanciamento del carico, ACL e incapsulamento. Per altre informazioni sulle API HNS e sullo schema, vedere API del servizio HCN (Host Compute Network) per macchine virtuali e contenitori.
Funzionalità e opzioni di rete non supportate
Le opzioni di rete seguenti non sono attualmente supportate in Windows:
- Da Windows Server 2022 in poi, i contenitori Windows hanno il supporto seguente per la rete IPv6:
- I contenitori collegati alle reti l2bridge supportano lo stack IPv6.
- I contenitori collegati alle reti trasparenti supportano la comunicazione usando IPv6 con indirizzi IP auto assegnati, ma non dispongono del supporto per l'assegnazione di indirizzi IP forniti da HNS e altri servizi di rete, ad esempio bilanciamento del carico e ACL.
- I contenitori Windows collegati alle reti NAT e overlay non supportano la comunicazione tramite lo stack IPv6.
- Comunicazione del contenitore crittografata tramite IPsec.
- Rete in modalità host.
- Rete nell'infrastruttura di Azure virtualizzata tramite il driver di rete trasparente.
Comando | Opzione non supportata |
---|---|
docker run |
--ip6 , --dns-option |
docker network create |
--aux-address , --internal , --ip-range , --ipam-driver --ipam-opt , , --ipv6 --opt encrypted |