Docker-Container: benutzerdefinierter Host-Netzwerkzugriffsvorgang

Docker-Container: benutzerdefinierter Host-Netzwerkzugriffsvorgang

Durch Hinzufügen des Schlüsselworts extra_hosts in docker-compose.yml werden Daten in die Datei /etc/hosts des Containers geschrieben.

extra_hosts

Fügen Sie eine Hostnamenzuordnung hinzu.

zusätzliche_hosts:

„somehost:162.242.195.82“

"anderer Host:50.31.209.229"

Der Eintrag wird in /etc/hosts erstellt:

162.242.195.82 irgendein Host

50.31.209.229 anderer Host

Beachten:

Wenn es auf die lokale Maschine zeigt, schreiben Sie nicht die IP des Containers (da sich die IP nach dem Neustart ändert, es sei denn, Sie legen eine feste IP für den Container fest), sondern die IP des Hosts, z. B. 192.168.xxx.xxx

Ergänzung: Docker-Netzwerk: Host-Modus

Wenn wir bereit sind, die Docker-Technologie auf Szenarien auf Produktionsebene anzuwenden, müssen wir viel über Netzwerke wissen. Die Netzwerkfunktion ist ein relativ schwacher Teil von Docker. Wir müssen die Netzwerkkenntnisse von Docker verstehen, um höhere Netzwerkanforderungen erfüllen zu können.

Dieser Abschnitt bietet zunächst eine theoretische Einführung in das Hostmodell im Docker-Netzwerkmodell und hilft Ihnen dann anhand praktischer Beispiele dabei, das Docker-Netzwerkmodell besser zu verstehen.

Docker-Netzwerk

Wenn Sie Docker installieren, werden automatisch drei Netzwerke erstellt. Sie können diese Netzwerke mit dem Befehl „Docker Network ls“ auflisten:

Docker-Netzwerk ls

Das Ergebnis sollte wie folgt aussehen

NETZWERK-ID-NAME TREIBER-UMFANG
594430d2d4bb Brücke Brücke lokal
d855b34c5d51 Host Host lokal
b1ecee29ed5e keine null lokal

Docker verfügt über diese drei integrierten Netzwerke und beim Ausführen eines Containers können Sie sie verwenden, um anzugeben, mit welchen Netzwerken der Container eine Verbindung herstellen soll.

Wenn wir Docker Run verwenden, um einen Docker-Container zu erstellen, können wir die Flag-Option --network verwenden, um den Netzwerkmodus des Containers anzugeben. Docker verfügt über die folgenden vier Netzwerkmodi:

Hostmodus: Verwenden Sie zur Angabe --net=host.

Keiner-Modus: Verwenden Sie zur Angabe --net=none.

Bridge-Modus: Verwenden Sie --net=bridge, um die Standardeinstellung anzugeben.

Containermodus: Verwenden Sie zur Angabe --net=container:NAME_oder_ID.

Host-Modus

Docker verwendet die Namespaces-Technologie von Linux, um Ressourcen zu isolieren, wie etwa PID-Namespaces zum Isolieren von Prozessen, Mount-Namespaces zum Isolieren von Dateisystemen und Network-Namespaces zum Isolieren von Netzwerken. Ein Netzwerk-Namespace bietet eine unabhängige Netzwerkumgebung, einschließlich Netzwerkkarten, Routing, Iptable-Regeln usw., die von anderen Netzwerk-Namespaces isoliert sind.

Der Host-Modus ähnelt dem Bridge-Modus von VMware. Er befindet sich im selben Netzwerk wie die Host-Maschine, hat aber keine unabhängige IP-Adresse. Einem Docker-Container wird grundsätzlich ein unabhängiger Netzwerk-Namespace zugewiesen.

Wenn beim Starten des Containers jedoch der Hostmodus verwendet wird, erhält der Container keinen unabhängigen Netzwerk-Namespace, sondern teilt einen Netzwerk-Namespace mit dem Host. Der Container virtualisiert nicht seine eigene Netzwerkkarte, konfiguriert nicht seine eigene IP usw., sondern verwendet die IP und den Port des Hosts.

Wie in der folgenden Abbildung dargestellt: Der Container und der Host befinden sich im selben Netzwerk-Namespace und verwenden denselben Netzwerkprotokollstapel. Der Container kann alle Netzwerkschnittstellen des Hosts direkt verwenden.

Fallüberprüfung

Host-Link-Schnittstelle anzeigen

IP-Adresse

Die IP des Cloud-Umgebungshosts auf der rechten Seite ist {host0.ip}/24. Starten Sie den Nginx-Container im Hostmodus und lauschen Sie seinem TCP80-Port.

Verwenden Sie den Hostparameter --net, um das Netzwerkmodell anzugeben, das den Hostmodus verwenden soll

docker run --name=nginx --net=host -p 80:80 -d nginx

Überprüfen Sie die Container-Link-Schnittstelle, die mit dem Host übereinstimmt

docker exec -it nginx cat /etc/hosts

Wenn die Außenwelt zu diesem Zeitpunkt auf die Anwendung im Container zugreifen möchte, verwenden Sie einfach {host0.ip}:80 ohne NAT-Konvertierung, als würde es direkt auf dem Hostcomputer ausgeführt. Andere Aspekte des Containers, etwa das Dateisystem und die Prozessliste, sind jedoch weiterhin vom Hostcomputer isoliert.

curl {host0.ip}

Zusammenfassen

Der Hostmodus ist einfach und leistungsstark. Das Netzwerkmodell im Hostmodus ist der einfachste Modus mit der geringsten Latenz. Der Containerprozess kommuniziert direkt mit der Host-Netzwerkschnittstelle, was der Leistung der physischen Maschine entspricht. Der Host unterstützt die Selbstkonfiguration und -verwaltung des Netzwerks nicht und alle Container des Hosts verwenden dieselbe IP.

Darüber hinaus ist es der Nutzung der Hostressourcen nicht förderlich. Dieser Modus kann verwendet werden, wenn hohe Anforderungen an die Netzwerkleistung gestellt werden. Andernfalls sollten andere Modi verwendet werden

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Detaillierte Einführung in den Docker-Netzwerkkonfigurationsprozess
  • Docker-Netzwerkprinzipien und detaillierte Analyse benutzerdefinierter Netzwerke
  • Prinzipielle Beispiele für die vier Netzwerktypen von Docker
  • Detaillierte Einführung in das benutzerdefinierte Docker-Netzwerk

<<:  So verstehen Sie die semantische HTML-Struktur

>>:  Vue implementiert zwei Methoden zur Steuerung der Routing-Berechtigung

Artikel empfehlen

Schritte der Docker-Lernmethode zum Erstellen des ActiveMQ-Nachrichtendienstes

Vorwort ActiveMQ ist der beliebteste und leistung...

Spezifische Verwendung von pthread_create in Linux zum Erstellen von Threads

pthread_create-Funktion Funktionseinführung pthre...

So verwenden Sie das VS2022-Remote-Debugging-Tool

Manchmal müssen Sie bei der Arbeit ein Remote-Deb...

Vue implementiert grafischen Überprüfungscode

In diesem Artikelbeispiel wird der spezifische Co...

10 Tipps zur Website-Benutzerfreundlichkeit, die jeder kennen sollte

Lassen Sie uns keine weitere Zeit verschwenden un...

Löschen von Dateien mit Leerzeichen in Linux (keine Verzeichnisse)

In unserer täglichen Arbeit kommen wir oft mit Da...

Implementierung eines Element-Eingabefelds, das automatisch den Fokus erhält

Beim Erstellen eines Formulars in einem aktuellen...

Fünf Richtlinien zum Schreiben von wartungsfreundlichem CSS-Code

1. Fügen Sie am Anfang des Stylesheets einen Komme...

So leiten Sie eine PC-Adresse in Vue an eine Mobiladresse um

Anforderungen: Die PC-Seite und die mobile Seite ...

Erläuterung des Menüs „Entwicklertools“ in IE8

<br />In diesem Artikel wurden die verschied...

Erste Schritte Tutorial für Anfänger: Domänennamenauflösung und Bindung

Wie können Sie also nach der Registrierung eines ...