So implementieren Sie die Kommunikation zwischen Docker-Containern

So implementieren Sie die Kommunikation zwischen Docker-Containern

Szenario: Eine Laradock-Entwicklungsumgebung (php7.3+mysql5.7) wurde lokal erstellt. Jetzt möchte ich die Laradock-Umgebung verwenden, um dasselbe vorhandene Projekt auszuführen, aber die Projektdaten befinden sich im Docker-Container mysql5.6. Jetzt muss ich die beiden Container verbinden, um eine Dateninteraktion zu erreichen.

Ich habe im Internet viele Informationen zum Thema „Kommunikation zwischen Docker-Containern_So erreichen Sie die Kommunikation zwischen Containern in Docker“ gelesen und mich schließlich dazu entschlossen, mit Docker ein neues Netzwerk zu erstellen (-d Bridge-Netzwerktreiber ist Bridge), beide Container mit dem Netzwerk zu verbinden und eine Dateninteraktion zu erreichen.

So geht's:

Bauen Sie selbst ein Netzwerk auf

[root@docker ~]# Docker-Netzwerk erstellen -d Bridge meine-Brücke
01f3d92281d7dd6eaeabd77c95c62f0d33f8d45bd0e1bc7c7e1c3208526dfd2a

Erstellen Sie ein Netzwerk, -d Bridge. Der Netzwerktreiber ist Bridge, mit dem Namen mybridge

Sehen Sie sich das erstellte Netzwerk an:

Bildbeschreibung hier einfügen

Starten Sie einen Container und nutzen Sie das selbstgebaute Netzwerk my-bridge

[root@docker ~]# docker run -d --name test3 --network my-bridge cgy/mycentos:v2 /bin/bash -c "while true;do sleep 3600;done"

44d549f38e2a38d528d26193c5585f8c68008411d764ad39d23dc57ee48ab28c

–network my-bridge: Gibt an, dass das vom Container verwendete Netzwerk die selbst erstellte my-bridge ist.

Der Container startete mit einem selbstgebauten Netzwerk, die IP lautet 172.18.0.2

Bildbeschreibung hier einfügen

Starten Sie einen weiteren Container test4, verwenden Sie nicht –network, um das Netzwerk anzugeben, und verwenden Sie standardmäßig das Docker0-Netzwerk:

[root@docker ~]# docker run -d --name test4 cgy/mycentos:v2 /bin/bash -c "while true;do sleep 3600;done"
c64c2993e94a3dc0359a0e38ed5f5d262c0b01be45bacdf1788c7b0c2223777b

Wenn die Container „test3“ und „test4“ nicht verknüpft sind, ist das Pingen nicht erfolgreich, unabhängig davon, ob der Containername oder die Container-IP verwendet wird:

Bildbeschreibung hier einfügen

Test4 zur selbstgebauten My-Bridge hinzufügen

[root@docker ~]# Docker-Netzwerk verbinden My-Bridge-Test4

Verwendung: Docker-Netzwerkverbindung [OPTIONEN] NETZWERKCONTAINER

Überprüfen Sie test4 und Sie werden sehen, dass es eine weitere virtuelle Netzwerkkarte gibt und sie sich im selben Netzwerksegment wie test3 befindet.

Bildbeschreibung hier einfügen

Zu diesem Zeitpunkt können Sie den Containernamen direkt zur Kommunikation verwenden

Bildbeschreibung hier einfügen

Überprüfen Sie die detaillierten Informationen zu my-bridge noch einmal

[root@docker ~]# Docker-Netzwerk inspiziere meine Bridge
[
    {
        "Name": "meine-Brücke",
        "ID": "01f3d92281d7dd6eaeabd77c95c62f0d33f8d45bd0e1bc7c7e1c3208526dfd2a",
        "Erstellt": "2018-05-01T01:08:04.864178764+08:00",
        "Geltungsbereich": "lokal",
        "Treiber": "Brücke",
        "EnableIPv6": false,
        "IPAM": {
            "Treiber": "Standard",
            "Optionen": {},
            "Konfiguration": [
                {
                    "Subnetz": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Intern": false,
        "Anfügbar": false,
        "Ingress": falsch,
        "Konfiguration von": {
            "Netzwerk": ""
        },
        "ConfigOnly": falsch,
        "Container": {
            "44d549f38e2a38d528d26193c5585f8c68008411d764ad39d23dc57ee48ab28c": {
                "Name": "test3",
                "EndpointID": "95f13c730e08f7c82e5f3ec555f3c3afa79a50eceb7a1f540463ba181c81d05c",
                "MacAdresse": "02:42:ac:12:00:02",
                "IPv4Adresse": "172.18.0.2/16",
                "IPv6Adresse": ""
            },
            "c64c2993e94a3dc0359a0e38ed5f5d262c0b01be45bacdf1788c7b0c2223777b": {
                "Name": "test4",
                "EndpointID": "9b41a9ef9b3e6dabdaad52167642a74aa7e05f93ceec65768b311945c8f2c036",
                "MacAdresse": "02:42:ac:12:00:03",
                "IPv4Adresse": "172.18.0.3/16",
                "IPv6Adresse": ""
            }
        },
        "Optionen": {},
        "Beschriftungen": {}
    }
]

Wie Sie sehen, hat my-bridge zwei Container verbunden, test3 und test4.

Referenz: https://www.jianshu.com/p/a9dce5179e31

Dies ist das Ende dieses Artikels zur Implementierung der Kommunikation zwischen Docker-Containern. Weitere Informationen zur Docker-Container-Kommunikation finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Vorgänge der Kommunikation zwischen Docker-Containern und der externen Netzwerkkommunikation
  • Implementierung der Docker-Container-Verbindung und -Kommunikation
  • Detaillierte Erläuterung der Docker-Container-Cross-Host-Multi-Netzwerksegment-Kommunikationslösung
  • Detaillierte Erläuterung des direkten Routings bei der hostübergreifenden Kommunikation von Docker-Containern
  • Detaillierte Erklärung, wie Docker-Container über Hosts hinweg kommunizieren
  • Detaillierte Erläuterung einer Methode zur Kommunikation zwischen Docker-Containern

<<:  Das CSS3-Diamantpuzzle realisiert die Funktion, nur das Div zu drehen und das Hintergrundbild nicht zu drehen

>>:  So erreichen Sie die maximale Anzahl von Verbindungen in MySQL

Artikel empfehlen

Linux Cron geplante Ausführung von PHP-Code mit Parametern

1. Verwenden Sie zur Ausführung weiterhin ein PHP...

HTML-Bild img-Tag_Powernode Java Academy

Zusammenfassung Projektbeschreibungsformat < i...

So ändern Sie schnell die Tabellenstruktur einer MySQL-Tabelle

Tabellenstruktur einer MySQL-Tabelle schnell ände...

So konfigurieren Sie SSH für die Anmeldung bei Linux mit Git Bash

1. Generieren Sie zunächst die öffentlichen und p...

Lösung für den MySQL-Fehlercode 1064

Wenn die Wörter in der SQL-Anweisung mit den Schl...

Übung zum Hochladen von Element-Avataren

Dieser Artikel verwendet die offizielle Element-W...

Der Unterschied zwischen shtml und html

Shtml und asp sind ähnlich. In Dateien mit dem Nam...

Vue3.0 implementiert die Kapselung des Dropdown-Menüs

Vue3.0 ist bereits seit einiger Zeit auf dem Mark...

Warum TypeScripts Enum problematisch ist

Inhaltsverzeichnis Was ist passiert? Verwendung S...