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

MySQL-Interviewfragen: So richten Sie Hash-Indizes ein

Zusätzlich zu den B-Tree-Indizes bietet MySQL auc...

Detaillierte Einführung in den DOCTYPE-Typ

<br />Wir deklarieren DOCTYPE in HTML normal...

4 Funktionen, die durch das Transform-Attribut in CSS3 implementiert werden

In CSS3 können mit der Transformationsfunktion vi...

CSS-Benennung: BEM, Scoped CSS, CSS-Module und CSS-in-JS erklärt

Der Anwendungsbereich von CSS ist global. Wenn da...

MySQL-Dateneinfügungsoptimierungsmethode concurrent_insert

Wenn ein Thread eine DELAYED-Anweisung für eine T...

Player in Webseite einbetten Einbettungselement Autostart falsch ungültig

Kürzlich musste ich einen Player in eine Webseite ...

Detaillierte Erklärung des Overflow-Scrollens zur Lösung des Scroll-Lag-Problems

Vorwort Wenn Sie das Attribut „overflow: scroll“ ...

jQuery-Plugin zum Erreichen eines Bildvergleichs

In diesem Artikelbeispiel wird der spezifische Co...