Krav: Jeg ønsker å tildele en uavhengig LAN-IP-adresse til Docker-containeren via DHCP-tjenesten til ruteren, slik at den utviklede ASP.NET Core-applikasjonen kan distribueres til flere servere (applikasjonen må distribueres til flere servere for å oppnå høy tilgjengelighet), og deretter kan de overføres til hverandre. Noen applikasjoner, spesielt eldre applikasjoner eller de som overvåker nettverkstrafikk, forventer å koble seg direkte til det fysiske nettverket. I dette tilfellet kan du bruke Macvlan-nettverksdriveren til å tildele en MAC-adresse til hver containers virtuelle nettverksgrensesnitt, slik at det ser ut som et fysisk nettverksgrensesnitt som kobles direkte til det fysiske nettverket. I dette tilfellet må du spesifisere et fysisk grensesnitt på Docker-verten din for macvlan. Og. subnett og gateways til Macvlan. Du kan til og med isolere nettverket ditt med et annet fysisk nettverksgrensesnitt.
Først må du sette det fysiske nettverkskortet til vertsmaskinenTillater «promiskuøs modus»-modusFor eksempel, med ESXI som eksempel, sett opp en virtuell bryter som følger:
Systemmiljøet er som følger:
CentOS Linux-utgivelse 7.9.2009 (kjerne) Docker versjon 20.10.20, bygg 9fdeb9c
Installer Docker-tjenesten på CentOS 7-verten. (utelatt)
Definerenet.ipv4.ip_forward = 1, du kan se den nåværende konfigurasjonen via sysctl -a, hvis det ikke er 1, vennligst endre den til 1, veiledningen er utelatt. Hovedformålet er å avgjøre om informasjonen mottatt av ett nettverkskort kan sendes til andre nettverkskort når Linux-verten har flere nettverkskort, og hvis den er satt til 1, kan pakkevideresending gjennomføres.
Når Docker-tjenesten er installert, opprett et macvlan-nettverk med følgende kommando:
--ip-range: Besluttet å tildele delsettet til Docker 192.168.50.192/27, som er et område på 32 adresser fra 192.168.50.192 til 192.168.50.223. --gateway: Sett gateway-adressen, vanligvis ruterens IP-adresse, vennligst still den etter din faktiske situasjon -o forelder: Foreldergrensesnittet, som er navnet på vertens fysiske NIC-kort, kan vises gjennom IP A i henhold til den faktiske situasjonen.
Etter at opprettelsen er fullført, kan du se den med følgende kommando:
Prøv å starte en busybox-container og sett opp et nettverk med den nyopprettede macvlan med følgende kommando:
Tips: Om nødvendig, gi beholderenFor å sette IP-adressen, bruk parameteren --ip, for eksempel: --ip=192.168.50.210
Du kan se IP-adressen til en container ved å bruke følgende kommando:
Selvfølgelig kan du også gå inn i beholderen for å se den, med følgende kommando:
ViBruk andre maskiner på LAN-et, prøv å pinge IP-adressen til containeren, kan du finne at du kan pinge, som vist i figuren nedenfor:
Når du ser på ruterens IP- og MAC-karttabell, kan du se at MAC/IP-adressen til docker-containeren er den samme som på ruteren, som vist i figuren under:
Prøv å starte en Redis-container på nytt og sett opp det nye MacVLAN-nettverket med følgende kommando:
CentOS-verten har også en redis-applikasjon som kjører og bruker port 6379, og vi lager en redis-containerapplikasjon som også bruker port 6379, altsåDen samme vertsporten 6379 blir lyttet til av to forskjellige IP-adresser, prøv å se om det fungerer.
Testresultatene fungerer alle normalt, som vist i figuren nedenfor:
Ressurser
Innloggingen med hyperkoblingen er synlig.
|