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

Tutorial zur Installation des GreasyFork-JS-Skripts auf dem Mobiltelefon

Inhaltsverzeichnis Vorwort 1. Iceraven-Browser (F...

Detaillierte Analyse der MySQL Master-Slave-Replikation

Vorwort: In MySQL sollte die Master-Slave-Archite...

Angular Dependency Injection erklärt

Inhaltsverzeichnis Überblick 1. Abhängigkeitsinje...

Detaillierte Erklärung des Vue Notepad-Beispiels

In diesem Artikelbeispiel wird der spezifische Co...

So kompilieren und installieren Sie OpenCV unter Ubuntu

Einfache Installation von opencv2: conda installi...

So beheben Sie Dateisystemfehler in Linux mit „fsck“

Vorwort Das Dateisystem ist für die Organisation ...

Detaillierte Erklärung des Overlay-Netzwerks in Docker

Übersetzt aus der offiziellen Docker-Dokumentatio...

Lösung für den Fehler, dass IE6 select nicht durch div abgedeckt werden kann

Verwenden Sie div, um eine Maske zu erstellen oder...

Detaillierte Erläuterung der JS ES6-Codierungsstandards

Inhaltsverzeichnis 1. Umfang des Blocks 1.1. let ...

MySQL Online-DDL-Tool Gh-Ost-Prinzipanalyse

Inhaltsverzeichnis 1. Einleitung 1.1 Grundsatz 1....

Semantik: Ist HTML/XHTML wirklich standardkonform?

<br />Originaltext: http://jorux.com/archive...