Detaillierte Erläuterung von drei Möglichkeiten, Docker-Container miteinander zu verbinden

Detaillierte Erläuterung von drei Möglichkeiten, Docker-Container miteinander zu verbinden

Es gibt drei Möglichkeiten, Docker-Container miteinander zu verbinden und zwischen ihnen zu kommunizieren:

  • Internes Docker-Netzwerk: nicht flexibel und leistungsstark genug, nicht empfohlen
  • Docker-Netzwerk: 1.9 oder höher, empfohlen
  • Docker-Link: Gilt für Versionen vor 1.9.

1. Internes Docker-Netzwerk

Einbeziehung des Docker-eigenen Netzwerkstapels.

Nach der Installation von Docker erstellt das System eine neue Netzwerkschnittstelle mit dem Namen docker0, die zum Verbinden des Containers und des Hosts verwendet wird. Der IP-Bereich liegt zwischen 172.16 und 172.30.

Jedem Docker-Container wird auf dieser Schnittstelle eine IP-Adresse zugewiesen.

Jedes Mal, wenn Docker einen Container erstellt, erstellt es eine Reihe miteinander verbundener Netzwerkschnittstellen. Ein Ende ist die eth0-Schnittstelle im Container und das andere Ende wird auf dem Host mit veth benannt.

Durch die Bindung jeder veth-Schnittstelle an die Docker0-Brücke erstellt Docker ein virtuelles Subnetz, das vom Host und allen Docker-Containern gemeinsam genutzt wird.

Realisieren Sie die Kommunikationsverbindung zwischen dem Container und dem Host. Beachten Sie, dass die veth-Schnittstelle nur vorhanden ist, wenn der Container ausgeführt wird.

Nachteile der Verwendung eines internen Netzwerks zur Realisierung der Verbindung:

  • Um die IP-Adresse eines anderen Containers in der Anwendung des Containers fest zu codieren;
  • Nach dem Neustart des Containers kann sich die IP-Adresse ändern.
  • Nicht bequem und flexibel genug.

2. Docker-Netzwerk

Verbindungen zwischen Containern werden über Netzwerke hergestellt.

Ermöglichen Sie Benutzern, eigene Netzwerke zu erstellen, über die Container miteinander kommunizieren;

Es kann zwischen verschiedenen Hosts kommunizieren und die Netzwerkkonfiguration ist flexibler;

Sie können Container stoppen, starten oder neu starten, ohne Verbindungen aktualisieren zu müssen.

Sie müssen keinen Container im Voraus erstellen und dann eine Verbindung zu ihm herstellen, noch müssen Sie sich Gedanken über die Reihenfolge machen, in der die Container ausgeführt werden. Sie können die Auflösung und Erkennung von Containernamen innerhalb des Netzwerks erhalten.

Integriert mit Docker Compose und Swarm;

Ein Container, der innerhalb eines Docker-Netzwerks gestartet wird, erkennt alle Container, die in diesem Netzwerk ausgeführt werden.

Und speichern Sie die Adressen dieser Container im lokalen DNS über die Datei /etc/hosts.
Jeder Host im Netzwerk kann im Format „Hostname“ oder „Hostname.Netzname“ aufgelöst und aufgerufen werden.

Wenn ein Container neu gestartet wird, wird seine IP-Adresse in der Datei /etc/hosts automatisch aktualisiert.

Beim Test fiel auf, dass in der Datei /etc/hosts scheinbar keine neuen Adressen anderer Container vorhanden waren, diese sich aber gegenseitig anpingen konnten.

Ein Container kann mehreren Netzwerken gleichzeitig beitreten, sodass sehr komplexe Netzwerkmodelle erstellt werden können;

  • Docker Network Create erstellt ein Netzwerk
  • Docker-Netzwerkinspektion. Netzwerkdetails anzeigen.
  • Docker Network LS listet alle Netzwerke im aktuellen System auf
  • Docker Network Connect verbindet einen vorhandenen Container mit einem Netzwerk
  • Docker Network Disconnect trennt einen Container vom Netzwerk
  • Docker Network RM entfernt ein oder mehrere Netzwerke
  • Docker Network Prune entfernt alle ungenutzten Netzwerke

3. Docker-Link

Der Name des Containers muss während des Verknüpfungsvorgangs referenziert werden und er kann nur auf demselben Hostcomputer funktionieren.

Wenn Sie den Container mit Docker Run starten, verwenden Sie den Parameter --link, um eine Client-Server-Verbindung zwischen den beiden Containern herzustellen.

Es sind zwei Parameter erforderlich, einer ist der Name des Link-Containers und der andere ist der Alias ​​des Links, d. h. --link redis:db.

Der verknüpfte Container ist der Dienst und die Verknüpfung ermöglicht dem Dienstcontainer die Kommunikation mit dem Client-Container.

Der Client-Container kann direkt auf jeden öffentlichen Port des Service-Containers zugreifen, sodass der Port des Service-Containers dem lokalen Host nicht zugänglich gemacht werden muss, was relativ sicherer ist.

Sie können mehrere Client-Container mit demselben Service-Container verknüpfen oder eine Verknüpfung mit mehreren Service-Containern herstellen, indem Sie --link mehrmals angeben.

Docker schreibt die Linkinformationen in die Datei /etc/hosts des Containers und in die Umgebungsvariablen, die die Linkinformationen enthalten.

Unabhängig von Ihrem Ansatz können Sie einen Web-Anwendungsstapel erstellen, der die folgenden Komponenten enthält:

  • Ein Webserver-Container
  • Ein Redis-Datenbankcontainer
  • Eine sichere Verbindung zwischen zwei Containern

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Docker SSH-Beispielcode zum Herstellen einer Verbindung mit einem Docker-Container
  • Einführung in die Docker-Verbindung, Spring Boot und MySQL-Containermethode
  • Detaillierte Erklärung zu Docker: Erlauben Sie dem Host-SSH, eine Verbindung zum Docker-Container herzustellen
  • Wie verwendet Docker Links, um Verbindungen zwischen Containern herzustellen?
  • Docker-Multicontainer-Verbindung (am Beispiel von Tomcat+MySQL)
  • Detaillierte Erläuterung zum Erstellen einer Mysql-Container- + Tomcat-Container-Verbindungsumgebung über Docker
  • Detaillierte Erklärung zum Erstellen eines MySQL-Containers mit Docker und zum Herstellen einer Verbindung zum Container über die Befehlszeile
  • Docker verwendet Link, um Verbindungen zwischen Containern herzustellen
  • Analyse der Implementierungsschritte für die Docker-Containerverbindung

<<:  Implementierungscode für die Verwendung von „Select“ zum Auswählen von Elementen in Vue+Openlayer

>>:  Detaillierte Erläuterung der MySQL-Replikationsprinzipien und praktischen Anwendungen

Artikel empfehlen

Über das WeChat-Gleitproblem des UniApp-Editors

Das Uniapp-Applet wird ein ähnliches Dropdown-Pro...

Grundlegendes Verständnis und Verwendung der HTML-Auswahloption

Detaillierte Erklärung von HTML (Option auswählen)...

Detaillierte Erklärung der wichtigsten Einzigartigkeit von v-for in Vue

Inhaltsverzeichnis 1. DOM-Diff 2. Fügen Sie Eleme...

So löschen Sie schwebenden Beispielcode in CSS

Überblick Das Rahmendiagramm dieses Artikels ist ...

Detailliertes Tutorial zur Installation von Docker auf CentOS 8

1. Frühere Versionen yum entfernen Docker Docker-...

Detaillierte Erläuterung der Nginx-Timeout-Konfiguration

Ich habe kürzlich in einem Projekt nginx und im B...

Packetdrills prägnantes Benutzerhandbuch

1. Kompilierung und Installation von Packetdrill ...

Inhaltstypbeschreibung, d. h. der Typ des HTTP-Anforderungsheaders

Um den Inhaltstyp zu lernen, müssen Sie zunächst ...

HTML-Kopfstruktur

Im Folgenden werden die häufig verwendete Kopfstr...

Erfahren Sie, wie Sie saubere und standardmäßige HTML-Tags schreiben

Guter HTML-Code ist die Grundlage einer schönen W...