Krav: Jag vill tilldela en oberoende LAN-IP-adress till Docker-containern via routerns DHCP-tjänst, så att den utvecklade ASP.NET Core-applikationen kan distribueras till flera servrar (applikationen måste distribueras till flera servrar för att uppnå hög tillgänglighet), och sedan kan de överföras till varandra. Vissa applikationer, särskilt äldre applikationer eller de som övervakar nätverkstrafik, förväntar sig att ansluta direkt till det fysiska nätverket. I det här fallet kan du använda Macvlan-nätverksdrivrutinen för att tilldela en MAC-adress till varje containers virtuella nätverksgränssnitt, så att det ser ut som ett fysiskt nätverksgränssnitt som kopplas direkt till det fysiska nätverket. I det här fallet behöver du specificera ett fysiskt gränssnitt på din Docker-värd för macvlan. Och. subnät och gateways till Macvlan. Du kan till och med isolera ditt nätverk med ett annat fysiskt nätverksgränssnitt.
Först måste du ställa in värddatorns fysiska nätverkskortTillåter "promiskuöst läge" lägeTill exempel, med ESXI som exempel, sätt upp en virtuell switch enligt följande:
Systemmiljön är som följer:
CentOS Linux-utgåva 7.9.2009 (Kärna) Docker version 20.10.20, bygg 9fdeb9c
Installera Docker-tjänsten på CentOS 7-värden. (utelämnat)
Förberedanet.ipv4.ip_forward = 1, du kan se den aktuella konfigurationen via sysctl -a, om det inte är 1, vänligen ändra den till 1, handledningen är utelämnad. Huvudsyftet är att avgöra om informationen som tas emot av ett nätverkskort kan skickas till andra nätverkskort när Linux-värden har flera nätverkskort, och om den är inställd på 1 kan paketvidarebefordran utföras.
När Docker-tjänsten är installerad, skapa ett macvlan-nätverk med följande kommando:
--ip-range: Beslutade att tilldela delmängden till Docker 192.168.50.192/27, vilket är ett intervall med 32 adresser som börjar vid 192.168.50.192 och slutar vid 192.168.50.223. --gateway: Ställ in gateway-adressen, vanligtvis routerns IP-adress, vänligen ställ in den efter din faktiska situation -o förälder: Föräldergränssnittet, som är namnet på värdens fysiska nätverkskort, kan ses via IP A beroende på den faktiska situationen.
När skapandet är klart kan du se det med följande kommando:
Försök starta en busybox-container och skapa ett nätverk med den nyskapade macvlan med följande kommando:
Tips: Om det behövs, ge behållarenFör att ställa in IP-adressen, använd parametern --ip, till exempel: --ip=192.168.50.210
Du kan se IP-adressen till en container med följande kommando:
Självklart kan du också gå in i containern för att se den, med följande kommando:
ViAnvänd andra maskiner på LAN:et, försök pinga containerns IP-adress, kan du se att du kan pinga, som visas i figuren nedan:
Om du tittar på routerns IP- och MAC-mappningstabell kan du se att MAC/IP-adressen för docker-containern är densamma som på routern, som visas i figuren nedan:
Försök starta en Redis-container igen och sätt upp det nya MacVLAN-nätverket med följande kommando:
CentOS-värden har också en redis-applikation igång och använder port 6379, och vi skapar en redis-containerapplikation som också använder port 6379, det vill sägaSamma värdport 6379 lyssnas på av två olika IP-adresser, försök se om det fungerar.
Testresultaten fungerar alla normalt, som visas i figuren nedan:
Resurser
Inloggningen med hyperlänken är synlig.
|