Requisiti: Voglio assegnare un indirizzo IP LAN indipendente al container Docker tramite il servizio DHCP del router, così che l'applicazione Core sviluppata ASP.NET possa essere distribuita su più server (l'applicazione deve essere implementata su più server per ottenere un'alta disponibilità), e poi trasferire tra loro. Alcune applicazioni, specialmente quelle legacy o quelle che monitorano il traffico di rete, si aspettano di connettersi direttamente alla rete fisica. In questo caso, puoi usare il driver di rete macvlan per assegnare un indirizzo MAC all'interfaccia di rete virtuale di ogni container, facendola sembrare un'interfaccia di rete fisica che si collega direttamente alla rete fisica. In questo caso, devi specificare un'interfaccia fisica sul tuo host Docker per macvlan. E. sottoreti e gateway di Macvlan. Puoi persino isolare la tua rete con un'interfaccia fisica diversa.
Per prima cosa, devi impostare la scheda fisica della macchina hostPermette la modalità "promiscua"Ad esempio, usando ESXI come esempio, configura uno switch virtuale come segue:
L'ambiente di sistema è il seguente:
CentOS Linux versione 7.9.2009 (Core) Docker versione 20.10.20, build 9fdeb9c
Installa il servizio Docker sull'host CentOS 7. (omesso)
Impostarenet.ipv4.ip_forward = 1, puoi visualizzare la configurazione attuale tramite sysctl -a, se non è 1, modifica la configurazione a 1, il tutorial è stato omesso. Lo scopo principale è determinare se le informazioni ricevute da una scheda di rete possono essere trasmesse ad altre schede di rete quando l'host Linux ha più schede di rete e, se impostata su 1, può essere effettuata l'inoltro dei pacchetti.
Quando il servizio Docker viene installato, crea una rete macvlan con il seguente comando:
--ip-range: Deciso di assegnare il sottoinsieme a Docker 192.168.50.192/27, che è un intervallo di 32 indirizzi che inizia da 192.168.50.192 e termina da 192.168.50.223. --gateway: Imposta l'indirizzo gateway, di solito l'indirizzo IP del router, impostalo in base alla tua situazione reale -o genitore: L'interfaccia genitore, che è il nome della scheda NIC fisica dell'host, può essere visualizzata tramite IP A a seconda della situazione reale.
Dopo aver completato la creazione, puoi visualizzarlo con il seguente comando:
Prova ad avviare un container busybox e a configurare una rete con la macvlan appena creata usando il seguente comando:
Consiglio: Se necessario, dai il contenitorePer impostare l'indirizzo IP, usa il parametro --ip, ad esempio: --ip=192.168.50.210
Puoi visualizzare l'indirizzo IP di un container usando il seguente comando:
Naturalmente, puoi anche entrare nel contenitore per vederlo, con il seguente comando:
NoiUsando altre macchine sulla LAN, prova a pingare l'indirizzo IP del container, puoi scoprire che puoi pingare, come mostrato nella figura qui sotto:
Guardando la tabella di mappatura IP e MAC del router, si può vedere che l'indirizzo MAC/IP del container docker è lo stesso di quello sul router, come mostrato nella figura qui sotto:
Prova a riavviare un container Redis e a configurare la nuova rete MacVLAN con il seguente comando:
Anche l'host CentOS ha un'applicazione redis in esecuzione e utilizza la porta 6379, e creiamo un'applicazione container redis che utilizza anch'essa la porta 6379, cioèLa stessa porta host 6379 è ascoltata da due IP diversi, prova a vedere se funziona.
I risultati dei test funzionano tutti normalmente, come mostrato nella figura sottostante:
Risorse
Il login del link ipertestuale è visibile.
|