Anforderungen: Ich möchte dem Docker-Container über den DHCP-Dienst des Routers eine unabhängige LAN-IP-Adresse zuweisen, damit die entwickelte ASP.NET Core-Anwendung auf mehreren Servern bereitgestellt werden kann (die Anwendung muss auf mehreren Servern bereitgestellt werden, um hohe Verfügbarkeit zu erreichen), und dann können sie aufeinander übertragen werden. Einige Anwendungen, insbesondere Altanwendungen oder solche, die den Netzwerkverkehr überwachen, erwarten, sich direkt mit dem physischen Netzwerk zu verbinden. In diesem Fall können Sie den Macvlan-Netzwerktreiber verwenden, um jeder virtuellen Netzwerkschnittstelle eines Containers eine MAC-Adresse zuzuweisen, sodass es wie eine physische Netzwerkschnittstelle aussieht, die direkt mit dem physischen Netzwerk verbunden ist. In diesem Fall musst du eine physische Schnittstelle auf deinem Docker-Host für MacVLAN angeben. Und. Subnetze und Gateways von Macvlan. Du kannst dein Netzwerk sogar mit einer anderen physischen Netzwerkschnittstelle isolieren.
Zuerst musst du die physische Netzwerkkarte der Hostmaschine einstellenErlaubt den "promiskuitiven Modus"-ModusZum Beispiel richten Sie unter Verwendung von ESXI einen virtuellen Switch wie folgt ein:
Die Systemumgebung ist wie folgt:
CentOS Linux Version 7.9.2009 (Core) Docker-Version 20.10.20, baue 9fdeb9c
Installiere den Docker-Dienst auf dem CentOS 7-Host. (weggelassen)
Aufstellennet.ipv4.ip_forward = 1, du kannst die aktuelle Konfiguration über sysctl -a ansehen, falls sie nicht 1 ist, bitte ändere sie auf 1, das Tutorial wird weggelassen. Der Hauptzweck besteht darin festzustellen, ob die von einer Netzwerkkarte empfangenen Informationen an andere Netzwerkkarten weitergegeben werden können, wenn der Linux-Host mehrere Netzwerkkarten hat, und wenn sie auf 1 gesetzt ist, kann eine Paketweiterleitung durchgeführt werden.
Wenn der Docker-Dienst installiert ist, erstelle ein Macvlan-Netzwerk mit folgendem Befehl:
--ip-range: Habe beschlossen, die Teilmenge Docker 192.168.50.192/27 zuzuweisen, was einen Bereich von 32 Adressen ist, beginnend bei 192.168.50.192 und endend bei 192.168.50.223. --gateway: Stellen Sie die Gateway-Adresse ein, normalerweise die Router-IP-Adresse, bitte stellen Sie sie entsprechend Ihrer aktuellen Situation ein -o Parent: Die Parent-Schnittstelle, die der Name der physischen NIC-Karte des Hosts ist, kann je nach tatsächlicher Situation über IP A angezeigt werden.
Nachdem die Erstellung abgeschlossen ist, kannst du sie mit folgendem Befehl ansehen:
Versuche, einen Busybox-Container zu starten und ein Netzwerk mit dem neu erstellten MacVLAN mit folgendem Befehl einzurichten:
Tipp: Wenn nötig, gib den BehälterUm die IP-Adresse festzulegen, verwenden Sie den Parameter --ip, zum Beispiel: --ip=192.168.50.210
Sie können die IP-Adresse eines Containers mit folgendem Befehl einsehen:
Natürlich kannst du auch in den Container hineingehen, um ihn mit folgendem Befehl anzusehen:
WirVersuchen Sie mit anderen Maschinen im LAN, die IP-Adresse des Containers zu pingen, Sie können feststellen, dass Sie pingen können, wie in der untenstehenden Abbildung gezeigt:
Wenn Sie sich die IP- und MAC-Mapping-Tabelle des Routers ansehen, sehen Sie, dass die MAC/IP-Adresse des Docker-Containers dieselbe ist wie die des Routers, wie in der untenstehenden Abbildung dargestellt:
Versuche, einen Redis-Container erneut zu starten und das neue MacVLAN-Netzwerk mit folgendem Befehl einzurichten:
Der CentOS-Host selbst hat ebenfalls eine Redis-Anwendung laufen und verwendet Port 6379, und wir erstellen eine Redis-Container-Anwendung, die ebenfalls Port 6379 verwendet, alsoDerselbe Host-Port 6379 wird von zwei verschiedenen IPs abgehört, versuche zu sehen, ob es funktioniert.
Die Testergebnisse funktionieren alle normal, wie in der untenstehenden Abbildung dargestellt:
Betriebsmittel
Der Hyperlink-Login ist sichtbar.
|