Drei Möglichkeiten zur Kommunikation zwischen Docker-Containern

Drei Möglichkeiten zur Kommunikation zwischen Docker-Containern

Wir alle wissen, dass Docker-Container voneinander isoliert sind und nicht aufeinander zugreifen können, aber was ist, wenn es abhängige Dienste gibt? Zur Lösung des Problems des gegenseitigen Containerzugriffs werden die folgenden drei Methoden vorgestellt.

Methode 1: Virtueller IP-Zugriff

Bei der Installation von Docker erstellt Docker standardmäßig ein internes Bridge-Netzwerk Docker0. Jedem erstellten Container wird eine virtuelle Netzwerkkarte zugewiesen, und Container können basierend auf der IP aufeinander zugreifen.

[root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig
......
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 172.17.0.1 Netzmaske 255.255.0.0 Broadcast 0.0.0.0
    inet6 fe80::42:35ff:feac:66d8 Präfixlänge 64 Bereichs-ID 0x20<link>
    Ether 02:42:35:ac:66:d8 txqueuelen 0 (Ethernet)
    RX-Pakete 4018 Bytes 266467 (260,2 KiB)
    RX-Fehler 0 verloren 0 Überläufe 0 Frame 0
    TX-Pakete 4226 Bytes 33935667 (32,3 MiB)
    TX-Fehler 0 verloren 0 Überläufe 0 Träger 0 Kollisionen 0
......

Führen Sie ein CentOS-Image aus und überprüfen Sie die IP-Adresse: 172.17.0.7

[root@CentOS ~]# docker run -it --name centos-1 docker.io/centos:latest
[root@6d214ff8d70a /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 172.17.0.7 Netzmaske 255.255.0.0 Broadcast 0.0.0.0
    inet6 fe80::42:acff:fe11:7 Präfixlänge 64 Bereichs-ID 0x20<link>
    Ether 02:42:ac:11:00:07 txqueuelen 0 (Ethernet)
    RX-Pakete 16 Bytes 1296 (1,2 KiB)
    RX-Fehler 0 verloren 0 Überläufe 0 Frame 0
    TX-Pakete 8 Bytes 648 (648,0 B)
    TX-Fehler 0 verloren 0 Überläufe 0 Träger 0 Kollisionen 0

Führen Sie denselben Befehl aus, um einen weiteren Container zu starten und die IP-Adresse zu überprüfen: 172.17.0.8

[root@CentOS ~]# docker run -it --name centos-2 docker.io/centos:latest
[root@33fcf82ab4dd /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 172.17.0.8 Netzmaske 255.255.0.0 Broadcast 0.0.0.0
    inet6 fe80::42:acff:fe11:8 Präfixlänge 64 Bereichs-ID 0x20<link>
    Ether 02:42:ac:11:00:08 txqueuelen 0 (Ethernet)
    RX-Pakete 8 Bytes 648 (648,0 B)
    RX-Fehler 0 verloren 0 Überläufe 0 Frame 0
    TX-Pakete 8 Bytes 648 (648,0 B)
    TX-Fehler 0 verloren 0 Überläufe 0 Träger 0 Kollisionen 0

Die Ergebnisse des Ping-Tests innerhalb des Containers sind wie folgt:

[root@33fcf82ab4dd /]# ping 172.17.0.7
PING 172.17.0.7 (172.17.0.7) 56(84) Bytes Daten.
64 Bytes von 172.17.0.7: icmp_seq=1 ttl=64 Zeit=0,205 ms
64 Bytes von 172.17.0.7: icmp_seq=2 ttl=64 Zeit=0,119 ms
64 Bytes von 172.17.0.7: icmp_seq=3 ttl=64 Zeit=0,118 ms
64 Bytes von 172.17.0.7: icmp_seq=4 ttl=64 Zeit=0,101 ms

Diese Methode erfordert die Kenntnis der IP-Adresse jedes Containers, was in der Praxis nicht praktikabel ist.

Methode 2: Link

Fügen Sie beim Ausführen des Containerlinks Parameter hinzu

Ausführen des ersten Containers

docker run -it --name centos-1 docker.io/centos:latest

Ausführen des zweiten Containers

[root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest

--link: Das erste centos-1 im Parameter ist der Containername und das zweite centos-1 ist der definierte Containeralias (verwenden Sie den Alias, um auf den Container zuzugreifen). Der Benutzerfreundlichkeit halber ist der Alias ​​im Allgemeinen standardmäßig der Containername.

Die Testergebnisse lauten wie folgt:

[root@e0841aa13c5b /]# ping centos-1
PING centos-1 (172.17.0.7) 56(84) Bytes Daten.
64 Bytes von Centos-1 (172.17.0.7): icmp_seq=1 ttl=64 Zeit=0,210 ms
64 Bytes von Centos-1 (172.17.0.7): icmp_seq=2 ttl=64 Zeit=0,116 ms
64 Bytes von Centos-1 (172.17.0.7): icmp_seq=3 ttl=64 Zeit=0,112 ms
64 Bytes von Centos-1 (172.17.0.7): icmp_seq=4 ttl=64 Zeit=0,114 ms

Diese Methode stellt Anforderungen an die Reihenfolge, in der Container erstellt werden. Wenn mehrere Container im Cluster aufeinander zugreifen müssen, ist die Verwendung nicht sehr praktisch.

Methode 3: Erstellen Sie ein Brückennetzwerk

1. Führen Sie nach der Installation von Docker den folgenden Befehl aus, um ein Bridge-Netzwerk zu erstellen: docker network create testnet

Das neu erstellte Bridge-Testnetz wird abgefragt.

2. Führen Sie den Container aus, um eine Verbindung mit dem Testnet-Netzwerk herzustellen.

Verwendung: docker run -it --name <Containername> ---network <Bridge> --network-alias <Netzwerkalias> <Imagename>

[root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest
[root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest

3. Ping von einem Container zum anderen. Die Testergebnisse sind wie folgt:

[root@fafe2622f2af /]# ping centos-1
PING centos-1 (172.20.0.2) 56(84) Bytes Daten.
64 Bytes von centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 Zeit=0,158 ms
64 Bytes von centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 Zeit=0,108 ms
64 Bytes von centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 Zeit=0,112 ms
64 Bytes von centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 Zeit=0,113 ms

4. Wenn Sie auf den Dienst im Container zugreifen möchten, können Sie diese Methode verwenden, um auf <Netzwerkalias> zuzugreifen: <Dienst-Portnummer>

Es wird empfohlen, diese Methode zum Anpassen des Netzwerks zu verwenden. Da der Netzwerkalias verwendet wird, müssen Sie sich keine Gedanken darüber machen, ob sich die IP ändert. Sie können aufeinander zugreifen, solange Sie in Docker eine Verbindung zum Bright-Netzwerk herstellen. Es können mehrere Brücken eingerichtet werden, um sie in verschiedenen Netzwerksegmenten zu isolieren.

Oben sind die Details der drei Methoden des gegenseitigen Zugriffs auf Docker-Container aufgeführt. Weitere Informationen zum gegenseitigen Zugriff auf Docker-Container finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detailliertes grafisches Tutorial zum Aktivieren des sicheren Remotezugriffs mit Docker
  • Lösung für das Problem, dass beim Hinzufügen eines Tomcat-Containers zu Docker kein Zugriff auf die Homepage möglich ist
  • So greifen Sie über eine unabhängige IP direkt auf das Docker-für-Windows-Container-Intranet zu
  • Eine Fehlerbehebungserfahrung im CentOS-Docker-Bridge-Modus, bei dem auf den Host-Redis-Dienst nicht zugegriffen werden kann
  • Detaillierte Erklärung zur Verwendung von Docker zum Erstellen von extern zugänglichem MySQL
  • Detaillierte Erläuterung zur Lösung des Problems, dass der Docker-Container nicht über IP auf den Hostcomputer zugreifen kann
  • So greifen Sie in Docker auf den lokalen Computer (Hostcomputer) zu
  • So verwenden Sie einen Docker-Container für den Zugriff auf das Host-Netzwerk
  • Lösung für das Problem, dass Docker Nginx nach dem Ausführen nicht mehr aufgerufen werden kann
  • Methode zum Zugriff auf unabhängige IP im Docker-Container

<<:  SQL-Zusammenführungsvorgang von Abfrageergebnissen von Tabellen mit unterschiedlichen Spalten

>>:  Das Vue-Projekt realisiert Anmelde- und Registrierungseffekte

Artikel empfehlen

Zusammenfassung der Wissenspunkte zu Null in der MySQL-Datenbank

In der MySQL-Datenbank ist Null eine häufige Situ...

Lösung für Tomcat zum externen Speichern von Konfigurationsdateien

Frage Wenn wir bei der normalen Entwicklung das P...

Hinweise zur Konfiguration mehrerer Proxys mithilfe von Vue-Projekten

Im Entwicklungsprozess eines Vue-Projekts konfigu...

So wählen Sie den richtigen MySQL-Datums-/Uhrzeittyp zum Speichern Ihrer Zeit

Beim Erstellen einer Datenbank und Schreiben eine...

Detaillierte Erklärung der Vue-Komponenten

<Text> <div id="Wurzel"> &l...

Detaillierte Erläuterung des Linux-CRM-Bereitstellungscodes

Linux-Grundkonfiguration Kompilieren und installi...

MySQL-Update-Fall Update-Feldwert ist keine feste Operation

Wenn bei der Verarbeitung von Batch-Updates besti...

So ändern Sie die Standardcodierung von MySQL in Linux

Wenn während des Entwicklungsprozesses nach der W...

Vier Möglichkeiten zum Wechseln von Registerkarten in VUE

Inhaltsverzeichnis 1. Statische Implementierungsm...