Was sind die vier Netzwerkmodi von Docker?
Die vier Netzwerkmodi von Docker sind: 1. Host-Modus, angegeben mit „–net=host“; 2. Container-Modus, angegeben mit „–net=container:NAME_or_ID“; 3. Keiner-Modus, angegeben mit „–net=none“. " angegeben; 4. Bridge-Modus.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.
Implementierungsprinzip
Docker nutzt Linux-Bridging (siehe „Linux Virtual Network Technology“), um eine Docker-Container-Brücke (docker0) auf dem Host zu virtualisieren. Wenn Docker einen Container startet, wird dieser dem Container entsprechend dem Netzwerk zugewiesen Segment der Docker-Bridge. Die IP-Adresse, Container-IP genannt, und die Docker-Bridge sind die Standard-Gateways für jeden Container. Da alle Container auf demselben Host mit derselben Netzwerkbrücke verbunden sind, können Container direkt über die Container-IP des Containers kommunizieren.
Die Docker-Bridge wird vom Host virtualisiert und ist kein echtes Netzwerkgerät. Sie kann vom externen Netzwerk nicht angesprochen werden, was auch bedeutet, dass das externe Netzwerk nicht über direkte Container-IP auf den Container zugreifen kann. Wenn der Container von außen zugänglich sein soll, können Sie den Container-Port dem Host zuordnen (Port-Mapping), d. h. ihn über den Parameter -p oder -P aktivieren, wenn Docker Run den Container erstellt, und [Host-IP verwenden ] beim Zugriff auf den Container: [Container-Port] Greifen Sie auf den Container zu.
Vier Arten von Netzwerkmodi
Docker-Netzwerkmodus | Konfiguration | Anweisungen |
---|---|---|
Hostmodus | –net=host | Der Container und der Host teilen sich den Netzwerk-Namespace. |
Containermodus | –net=container:NAME_or_ID | Der Container teilt den Netzwerk-Namespace mit einem anderen Container. Ein Pod in Kubernetes ist ein Netzwerk-Namespace, der von mehreren Containern gemeinsam genutzt wird. |
Keine-Modus | –net=none | Der Container verfügt über einen unabhängigen Netzwerk-Namespace, es werden jedoch keine Netzwerkeinstellungen dafür vorgenommen, wie z. B. die Zuweisung von Veth-Paaren und Bridge-Verbindungen, die Konfiguration von IP usw. |
Bridge-Modus | –net=bridge | (Standard ist dieser Modus) |
Host-Modus
Wenn Sie beim Starten eines Containers den Host-Modus verwenden, erhält der Container keinen unabhängigen Netzwerk-Namespace, sondern teilt sich einen Netzwerk-Namespace mit dem Host. Der Container virtualisiert nicht seine eigene Netzwerkkarte, konfiguriert seine eigene IP usw., sondern verwendet die IP und den Port des Hosts. Andere Aspekte des Containers, wie das Dateisystem, die Prozessliste usw., sind jedoch immer noch vom Host isoliert.
Container, die den Host-Modus verwenden, können direkt die IP-Adresse des Hosts verwenden, um mit der Außenwelt zu kommunizieren. Der Service-Port innerhalb des Containers kann auch den Port des Hosts ohne NAT verwenden besser, aber Docker-Host-Ports, die bereits verwendet wurden, können nicht erneut verwendet werden und die Isolierung des Netzwerks ist nicht gut.
Der Host-Modus ist in der folgenden Abbildung dargestellt:
Container-Modus
Dieser Modus gibt an, dass der neu erstellte Container einen Netzwerk-Namespace mit einem vorhandenen Container teilt, anstatt ihn mit dem Host zu teilen. Der neu erstellte Container erstellt keine eigene Netzwerkkarte und konfiguriert keine eigene IP, sondern teilt die IP, den Portbereich usw. mit einem angegebenen Container. Abgesehen vom Netzwerk sind die beiden Container auch in anderen Aspekten wie Dateisystemen, Prozesslisten usw. isoliert. Die Prozesse der beiden Container können über das lo-Netzwerkkartengerät kommunizieren.
Container-Modus-Diagramm:
Kein-Modus
Im Kein-Modus verfügt der Docker-Container über einen eigenen Netzwerk-Namespace, es wird jedoch keine Netzwerkkonfiguration für den Docker-Container durchgeführt. Mit anderen Worten: Dieser Docker-Container verfügt nicht über Netzwerkkarten-, IP-, Routing- und andere Informationen. Wir müssen selbst Netzwerkkarten hinzufügen, IP konfigurieren usw. zum Docker-Container.
In diesem Netzwerkmodus verfügt der Container nur über das Lo-Loopback-Netzwerk und keine anderen Netzwerkkarten. Der None-Modus kann beim Erstellen des Containers über --network=none angegeben werden. Diese Art von Netzwerk kann nicht mit dem Internet verbunden werden. Ein geschlossenes Netzwerk kann die Sicherheit des Containers gewährleisten.
Kein-Modus-Diagramm:
Bridge-Modus
Wenn der Docker-Prozess startet, wird auf dem Host eine virtuelle Bridge mit dem Namen docker0 erstellt und der auf diesem Host gestartete Docker-Container stellt eine Verbindung zu diesem virtuellen Netzwerk her die Brücke. Eine virtuelle Bridge funktioniert ähnlich wie ein physischer Switch, sodass alle Container auf dem Host über den Switch mit einem Layer-2-Netzwerk verbunden sind.
Weisen Sie dem Container eine IP aus dem Docker0-Subnetz zu und legen Sie die Docker0-IP-Adresse als Standard-Gateway des Containers fest. Erstellen Sie ein Paar virtueller Netzwerkkarten-Veth-Paar-Geräte auf dem Host. Docker platziert ein Ende des Veth-Paar-Geräts im neu erstellten Container und nennt es eth0 (die Netzwerkkarte des Containers) und das andere Ende im Host mit einem ähnlichen Namen wie vethxxx. Benennen Sie dieses Netzwerkgerät und fügen Sie es zur Docker0-Brücke hinzu. Sie können es mit dem Befehl brctl show anzeigen.
Der Bridge-Modus ist der Standard-Netzwerkmodus von Docker. Wenn Sie den Parameter --net nicht schreiben, handelt es sich um den Bridge-Modus. Bei Verwendung von docker run -p erstellt Docker tatsächlich DNAT-Regeln in iptables, um die Portweiterleitungsfunktion zu implementieren. Sie können iptables -t nat -vnL zum Anzeigen verwenden. Der
Bridge-Modus ist im Bild unten dargestellt:
Empfohlenes Lernen: „Docker-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas sind die vier Netzwerkmodi von Docker?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Schritte zum Erstellen eines Docker -Images: Schreiben Sie eine Dockerfile, die die Build -Anweisungen enthält. Erstellen Sie das Bild im Terminal mit dem Befehl Docker Build. Markieren Sie das Bild und weisen Sie Namen und Tags mit dem Befehl Docker Tag zu.

Wie benutze ich Docker Desktop? Docker Desktop ist ein Werkzeug zum Ausführen von Docker -Containern auf lokalen Maschinen. Zu den zu verwendenden Schritten gehören: 1.. Docker Desktop installieren; 2. Start Docker Desktop; 3.. Erstellen Sie das Docker -Bild (mit Dockerfile); 4. Build Docker Image (mit Docker Build); 5. Docker -Container ausführen (mit Docker Run).

Die Schritte zur Aktualisierung eines Docker -Images sind wie folgt: Ziehen Sie das neueste Bild -Tag. Neues Bild Löschen Sie das alte Bild für ein bestimmtes Tag (optional) den Container neu (falls erforderlich) neu starten Sie neu (falls erforderlich).

Um das Bild in Docker zu speichern, können Sie den Befehl docker comit verwenden, um ein neues Bild zu erstellen, das den aktuellen Status des angegebenen Containers Syntax: Docker Commit [Optionen] Container -ID -Bildname enthält. Um das Bild im Repository zu speichern, können Sie den Befehl Docker Push, Syntax: Docker -Push -Bildname [: Tag] verwenden. Um gespeicherte Bilder zu importieren, können Sie den Befehl Docker Pull, Syntax: Docker Pull Bildname [: Tag] verwenden.

Vier Möglichkeiten zum Beenden von Docker Container: Verwenden Sie Strg D im Befehl Container Terminal ENGEBOT IM Container Terminal verwenden Sie Docker Stop & lt; container_name & gt; Befehl verwenden Sie Docker Kill & lt; container_name & gt; Befehl im Host -Terminal (Force Exit)

Methoden zum Kopieren von Dateien in externen Hosts in Docker: Verwenden Sie den Befehl Docker CP: Docker CP [Optionen] & lt; Containerpfad & gt; & lt; Host -Pfad & gt;. Verwenden von Datenvolumina: Erstellen Sie ein Verzeichnis auf dem Host und verwenden Sie den Parameter -V, um das Verzeichnis in den Container zu montieren, um den Container zu erstellen, um eine bidirektionale Dateisynchronisation zu erreichen.

Sie können den Namen des Docker -Containers abfragen, indem Sie den Schritten folgen: Alle Container auflisten (Docker PS). Filtern Sie die Containerliste (unter Verwendung des GREP -Befehls). Ruft den Containernamen ab (befindet sich in der Spalte "Namen").

Fehlerbehebung Schritte für fehlgeschlagene Docker -Bild Build: Überprüfen Sie die Dockerfile -Syntax und die Abhängigkeitsversion. Überprüfen Sie, ob der Build -Kontext den erforderlichen Quellcode und die erforderlichen Abhängigkeiten enthält. Sehen Sie sich das Build -Protokoll für Fehlerdetails an. Verwenden Sie die Option -Target -Option, um eine hierarchische Phase zu erstellen, um Fehlerpunkte zu identifizieren. Verwenden Sie die neueste Version von Docker Engine. Erstellen Sie das Bild mit--t [Bildname]: Debugg-Modus, um das Problem zu debuggen. Überprüfen Sie den Speicherplatz und stellen Sie sicher, dass dies ausreicht. Deaktivieren Sie Selinux, um eine Störung des Build -Prozesses zu verhindern. Fragen Sie Community -Plattformen um Hilfe, stellen Sie Dockerfiles an und erstellen Sie Protokollbeschreibungen für genauere Vorschläge.
