Krav: Jeg vil tildele en uafhængig LAN-IP-adresse til Docker-containeren via routerens DHCP-tjeneste, så den udviklede ASP.NET Core-applikation kan distribueres til flere servere (applikationen skal distribueres til flere servere for at opnå høj tilgængelighed), og derefter kan de overføres til hinanden. Nogle applikationer, især ældre applikationer eller dem, der overvåger netværkstrafik, forventer at kunne forbinde direkte til det fysiske netværk. I dette tilfælde kan du bruge macvlan-netværksdriveren til at tildele en MAC-adresse til hver containers virtuelle netværksinterface, så det ligner et fysisk netværksinterface, der forbinder direkte til det fysiske netværk. I dette tilfælde skal du specificere en fysisk grænseflade på din Docker-host til macvlan. Og. subnets og gateways i Macvlan. Du kan endda isolere dit netværk med en anden fysisk netværksgrænseflade.
Først skal du sætte det fysiske netværkskort for værtsmaskinens netværkskortTillader "promiskuøs tilstand" tilstandFor eksempel, hvis vi bruger ESXI som eksempel, opsæt en virtuel switch som følger:
Systemmiljøet er som følger:
CentOS Linux udgivelse 7.9.2009 (Core) Docker version 20.10.20, build 9fdeb9c
Installer Docker-tjenesten på CentOS 7-hosten. (udeladt)
Rejsenet.ipv4.ip_forward = 1, du kan se den nuværende konfiguration via sysctl -a, hvis det ikke er 1, så ændr den venligst til 1, tutorialen er udeladt. Hovedformålet er at afgøre, om informationen modtaget af ét netværkskort kan videregives til andre netværkskort, når Linux-værten har flere netværkskort, og hvis den er sat til 1, kan pakkevideresendelse udføres.
Når Docker-tjenesten er installeret, opret et macvlan-netværk med følgende kommando:
--ip-range: Besluttede at tildele delmængden til Docker 192.168.50.192/27, som er et interval på 32 adresser, der starter ved 192.168.50.192 og slutter ved 192.168.50.223. --gateway: Sæt gateway-adressen, normalt routerens IP-adresse, sæt den venligst efter din faktiske situation -o forælder: Forældergrænsefladen, som er navnet på værtens fysiske NIC-kort, kan ses via IP A i henhold til den faktiske situation.
Når oprettelsen er færdig, kan du se den med følgende kommando:
Prøv at starte en busybox-container og opsætte et netværk med den nyoprettede macvlan med følgende kommando:
Tip: Hvis nødvendigt, giv beholderenFor at sætte IP-adressen skal du bruge --ip-parameteren, for eksempel: --ip=192.168.50.210
Du kan se IP-adressen på en container ved at bruge følgende kommando:
Selvfølgelig kan du også gå ind i beholderen for at se det med følgende kommando:
ViBrug andre maskiner på LAN'et, prøv at pinge containerens IP-adresse, kan du opdage, at du kan pinge, som vist i figuren nedenfor:
Hvis du kigger på routerens IP- og MAC-mapping-tabelle, kan du se, at MAC/IP-adressen på docker-containeren er den samme som på routeren, som vist i figuren nedenfor:
Prøv at starte en Redis-container igen og opsæt det nye MacVLAN-netværk med følgende kommando:
CentOS-værten selv har også en redis-applikation kørende og bruger port 6379, og vi opretter en redis container-applikation, der også bruger port 6379, altsåDen samme værtport 6379 lyttes til af to forskellige IP-adresser, prøv at se, om det virker.
Testresultaterne fungerer alle normalt, som vist i figuren nedenfor:
Ressourcer
Hyperlink-login er synlig.
|