Rete di contenitori di Windows
Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016
Importante
Fare riferimento a Docker Container Networking per comandi di rete Docker generali, opzioni e sintassi. Ad eccezione di eventuali 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, come tale, 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) che è connessa a un commutatore virtuale (vSwitch) Hyper-V. Windows supporta cinque diversi driver di rete o modalità che possono essere creati tramite Docker: nat, sovrimpressione, trasparente, l2bridge e l2tunnel. A seconda dell'infrastruttura della rete fisica e dei requisiti della rete host singolo o multihosting, scegli il driver di rete più adatto alle tue esigenze.
La prima esecuzione del motore Docker creerà una rete NAT predefinita, 'nat', che usa un vSwitch interno e un componente Windows denominato WinNAT
. Se nell'host sono presenti vSwitches esterne preesistenti che sono state create tramite PowerShell o Hyper-V Manager, 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 è direttamente connesso a una scheda di rete nell'host del contenitore.
- Un vSwitch esterno è uno che è direttamente connesso a una scheda di rete nell'host del contenitore.
La rete "nat" è la rete predefinita per i contenitori in esecuzione in Windows. Qualsiasi contenitore eseguito in Windows senza contrassegni o argomenti per implementare specifiche configurazioni di rete verrà collegato alla rete "nat" predefinita e gli verrà assegnato automaticamente un indirizzo IP dall'intervallo di IP con prefisso interno della rete "nat'. Il prefisso IP predefinito interno utilizzato per "nat" è 172.16.0.0/16.
Gestione della rete di contenitori con il servizio rete host
Il servizio di rete host (HNS) e il servizio di calcolo host (HCS) interagiscono per creare contenitori e collegare endpoint a una rete. È possibile interagire con HNS tramite il modulo helper di PowerShell HNS.
Creazione di una 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 spazio dei nomi di rete per endpoint contenitore
- HNS/HCS inserisce v(m)NIC all'interno dello spazio dei nomi di rete
- HNS crea porte (vSwitch)
- HNS assegna indirizzo IP, informazioni DNS, 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 la piattaforma VFP (Virtual Filtering Platform) per la creazione di criteri che include bilanciamento del carico, elenchi di controllo di accesso e incapsulamento. Per altre informazioni sulle API HNS e sullo schema, vedere API del servizio HCN (Host Compute Network) per macchine virtuali e contenitori.
Opzioni di rete e funzionalità non supportate
Le opzioni di rete seguenti non sono attualmente supportate in Windows:
- A partire da Windows Server 2022, i contenitori Windows collegati alle reti l2bridge supportano lo stack IPv6. Tuttavia, i contenitori Windows collegati alle reti NAT e sovrimpressione non supportano la comunicazione sullo 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 |