Benutzerdefinierte Docker-Netzwerkcontainer-Verbindung

Benutzerdefinierte Docker-Netzwerkcontainer-Verbindung

Vorwort

In den vorherigen Ausgaben haben wir vorgestellt, dass die Verbindung zwischen Containern mithilfe des Parameters –Link eingestellt werden kann, sodass im Container nicht nur auf die IP-Adresse, sondern auch auf den entsprechenden Domänennamen zugegriffen werden kann. Zuerst überprüfen. Leeren Sie vor der Handhabung alle Behälter.

-Link

# Alle Container löschen $root@VM-8-11-ubuntu:~# docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
88f8f241ca30
765ed1889bfa

$root@VM-8-11-ubuntu:~# docker run -it --name=mybusy02 -d busybox
82aff31e56f3913b3fa883a08ec95960eff88fc9977360a67264c0d53180844b
$root@VM-8-11-ubuntu:~# docker run -it --name mybusy --link mybusy02:mybusy-net -d busybox
b77e9762314f868518f799d3c572dec0b2ce13a684de072fb9f9e925135f6459

$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy-net
PING mybusy-net (172.17.0.2): 56 Datenbytes
64 Bytes von 172.17.0.2: seq=0 ttl=64 Zeit=0,131 ms
64 Bytes von 172.17.0.2: seq=1 ttl=64 Zeit=0,069 ms
64 Bytes von 172.17.0.2: seq=2 ttl=64 Zeit=0,069 ms

$root@VM-8-11-ubuntu:~# docker exec -it mybusy cat /etc/hosts
127.0.0.1 lokaler Host
::1 lokaler Host ip6-lokaler Host ip6-Loopback
fe00::0 ip6-lokales Netz
ff00::0 ip6-mcastprefix
ff02::1 ip6-alle Knoten
ff02::2 ip6-allerouter
172.17.0.2 mybusy-net 09a4b97fc09d mybusy02 # Wir haben festgestellt, dass mybusy02 zur Hosts-Datei hinzugefügt wurde
172.17.0.3 c73be07d21fb

Wir haben festgestellt, dass sie verbunden sind, aber wenn mybusy02 mybusy anpingen möchte, benötigt es einen –link . Dies ist also sehr problematisch und der Beamte empfiehlt außerdem, den Parameter --link nicht zu verwenden.

Docker 0 unterstützt keinen Zugriff auf Containernamen. Als nächstes kommen wir zum heutigen Highlight, dem benutzerdefinierten Networking.

Bildbeschreibung hier einfügen

Benutzerdefiniertes Netzwerk

# Hauptsächlich beteiligte Befehle $root@VM-8-11-ubuntu:~# docker network --help

Verwendung: Docker-Netzwerk-Befehl

Netzwerke verwalten

Befehle:
  Verbinden Einen Container mit einem Netzwerk verbinden
  erstellen Erstellen Sie ein Netzwerk
  trennen Einen Container von einem Netzwerk trennen
  inspect Detaillierte Informationen zu einem oder mehreren Netzwerken anzeigen
  ls Netzwerke auflisten
  prune Alle ungenutzten Netzwerke entfernen
  rm Entfernen Sie ein oder mehrere Netzwerke

Führen Sie „docker network COMMAND --help“ aus, um weitere Informationen zu einem Befehl zu erhalten.
# Dies ist der Standardnetzwerkmodus. Brudge ist die Bridge von Docker 0 $root@VM-8-11-ubuntu:~# Docker-Netzwerk ls
NETZWERK-ID-NAME TREIBER-UMFANG
cf05ea05d3bd Brücke Brücke lokal
0ab28e475dc6 Host Host lokal
e4c628cc77db keine null lokal

Lassen Sie uns „Create“ verwenden, um unser eigenes Brückennetzwerk zu erstellen. Base

# --driver Netzwerktyp festlegen --subnet Subnetz festlegen/16 = 255*255 IP minus 0,0 und 255,255 entspricht ungefähr 65535
$root@VM-8-11-ubuntu:~# Docker-Netzwerk erstellen --Treiber=Bridge --Subnet=192.168.0.0/16 my-net
1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970
root@VM-8-11-ubuntu:~# Docker-Netzwerk ls
NETZWERK-ID-NAME TREIBER-UMFANG
cf05ea05d3bd Brücke Brücke lokal
0ab28e475dc6 Host Host lokal
1b668a5439b2 My-Net-Brücke lokal
e4c628cc77db keine null lokal

# Netzwerkinformationen prüfen $root@VM-8-11-ubuntu:~# docker network inspect my-net
[
    {
        "Name": "mein-netz",
        "ID": "1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970",
        "Erstellt": "2021-12-01T09:47:21.410882291+08:00",
        "Geltungsbereich": "lokal",
        "Treiber": "Brücke",
        "EnableIPv6": false,
        "IPAM": {
            "Treiber": "Standard",
            "Optionen": {},
            "Konfiguration": [
                {
                    "Subnetz": "192.168.0.0/16"
                }
            ]
        },
        "Intern": false,
        "Anfügbar": false,
        "Ingress": falsch,
        "Konfiguration von": {
            "Netzwerk": ""
        },
        "ConfigOnly": falsch,
        "Container": {},
        "Optionen": {},
        "Beschriftungen": {}
    }
]

Oben haben wir erklärt, wie man ein Netzwerk erstellt und anzeigt. Als Nächstes schauen wir uns an, wie man es verwendet.

# Mybusy-Container erstellen und My-Net-Netzwerk einrichten $root@VM-8-11-ubuntu:~# docker run -it --name mybusy --net=my-net -d busybox
180fbc8b04627762a896d8a85d8cb67063c01a0f3ad8a11352ab4695b022c272
# Erstellen Sie den Container mybusy02 und legen Sie das Netzwerk my-net fest $root@VM-8-11-ubuntu:~# docker run -it --name mybusy02 --net=my-net -d busybox
3c08d592537a9593c960c9664b4724521658f26be7b658a6483e6fbfe30b58a7
# Im Container mybusy ping mybusy02 ist erfolgreich$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy02
PING mybusy02 (192.168.0.3): 56 Datenbytes
64 Bytes von 192.168.0.3: seq=0 ttl=64 Zeit=0,110 ms
64 Bytes von 192.168.0.3: seq=1 ttl=64 Zeit=0,070 ms

An diesem Punkt stellten wir fest, dass sie sich gegenseitig anpingen konnten, was perfekt war. Schauen wir uns die folgende my-net Netzwerkkonfiguration an

root@VM-8-11-ubuntu:~# Docker-Netzwerk überprüfen, mein Netz 
[
    {
        "Name": "mein-netz",
        "ID": "1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970",
        "Erstellt": "2021-12-01T09:47:21.410882291+08:00",
        "Geltungsbereich": "lokal",
        "Treiber": "Brücke",
        "EnableIPv6": false,
        "IPAM": {
            "Treiber": "Standard",
            "Optionen": {},
            "Konfiguration": [
                {
                    "Subnetz": "192.168.0.0/16"
                }
            ]
        },
        "Intern": false,
        "Anfügbar": false,
        "Ingress": falsch,
        "Konfiguration von": {
            "Netzwerk": ""
        },
        "ConfigOnly": falsch,
        "Container": { # Zu diesem Zeitpunkt haben wir festgestellt, dass diese beiden Container zu diesem Netzwerk hinzugefügt wurden "180fbc8b04627762a896d8a85d8cb67063c01a0f3ad8a11352ab4695b022c272": {
                "Name": "mybusy",
                "EndpointID": "12929182af47e619e3405cab9981ea1671a2bc31f77d3aa589ebcf2c912c12bc",
                "MacAdresse": "02:42:c0:a8:00:02",
                "IPv4Adresse": "192.168.0.2/16",
                "IPv6Adresse": ""
            },
            "3c08d592537a9593c960c9664b4724521658f26be7b658a6483e6fbfe30b58a7": {
                "Name": "mybusy02",
                "EndpointID": "61b08372535d751cee726fc01d4e300390e2a090dba20f1d21ba96385a7a621e",
                "MacAdresse": "02:42:c0:a8:00:03",
                "IPv4Adresse": "192.168.0.3/16",
                "IPv6Adresse": ""
            }
        },
        "Optionen": {},
        "Beschriftungen": {}
    }
]

Eine Frage stellen

Können Container mit unterschiedlichen Netzwerkkonfigurationen miteinander verbunden werden?

Die Antwort ist ja. Wir können den Befehl „Docker Network Connect“ verwenden. Hier sind die Schritte:

# Überprüfen Sie zuerst die beiden Container mybusy und mybusy02, die derzeit im selben Netzwerk vorhanden sind $root@VM-8-11-ubuntu:~# docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
3c08d592537a busybox "sh" vor 8 Minuten Up 8 Minuten mybusy02
180fbc8b0462 busybox "sh" vor 8 Minuten Up 8 Minuten mybusy
# Erstellen Sie ein mybusy03 im Standardnetzwerk
$root@VM-8-11-ubuntu:~# docker run -it --name mybusy03 -d busybox
a95b57c96f400ed44efffcc938bccce15830fa1ab5b55716261e4588c14429cb
# Den aktuellen Container anzeigen $root@VM-8-11-ubuntu:~# docker ps 
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
a95b57c96f40 busybox "sh" vor 21 Sekunden Up 21 Sekunden mybusy03
3c08d592537a busybox "sh" vor 8 Minuten Up 8 Minuten mybusy02
180fbc8b0462 busybox "sh" vor 9 Minuten Up 9 Minuten mybusy
# Versuchen Sie, mybusy03 von mybusy aus anzupingen und stellen Sie fest, dass der Ping nicht funktioniert, weil sie sich nicht im selben Netzwerk befinden. $root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy03
Ping: ungültige Adresse „mybusy03“
# Jetzt überprüfen wir den Befehl docker network connect --help, um $root@VM-8-11-ubuntu:~# docker network connect --help anzuzeigen.

Verwendung: Docker-Netzwerkverbindung [OPTIONEN] NETZWERKCONTAINER

Verbinden eines Containers mit einem Netzwerk

Optionen:
      --alias strings Netzwerkweit gültigen Alias ​​für den Container hinzufügen
      --driver-opt strings Treiberoptionen für das Netzwerk
      --ip Zeichenfolge IPv4-Adresse (z. B. 172.30.100.104)
      --ip6 Zeichenfolge IPv6-Adresse (z. B. 2001:db8::33)
      --link list Link zu einem anderen Container hinzufügen
      --link-local-ip strings Fügt eine Link-Local-Adresse für den Container hinzu
# Fügen Sie mybusy03 zum my-net-Netzwerk hinzu $root@VM-8-11-ubuntu:~# docker network connect my-net mybusy03
# Dann pingen wir erneut und stellen fest, dass es funktioniert. Ist das nicht unglaublich? $root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy03
PING mybusy03 (192.168.0.4): 56 Datenbytes
64 Bytes von 192.168.0.4: seq=0 ttl=64 Zeit=0,197 ms
64 Bytes von 192.168.0.4: seq=1 ttl=64 Zeit=0,087 ms

Zu diesem Zeitpunkt haben wir das Netzwerk überprüft und festgestellt, dass mybusy03 zu my-net hinzugefügt wurde. Es kann also erfolgreich angepingt werden.

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die benutzerdefinierte Docker-Netzwerkcontainerverbindung. Weitere verwandte Inhalte zur Docker-Containerverbindung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Eine kurze Diskussion über die vorläufige Praxis der Docker-Container-Verbindung
  • Detaillierte Erläuterung der Docker-Portzuordnung und Containerverbindung
  • Detaillierte Erläuterung der Verbindungsmethoden für Docker-Container

<<:  HTML-Grundlagen - Einfaches Beispiel zum Festlegen des Hyperlink-Stils

>>:  Hinweise zu Fallstricken bei Vuex und Pinia in Vue3

Artikel empfehlen

So verwenden Sie Nginx, um einen RTMP-Liveserver auszuführen

Dieses Mal haben wir einen RTMP-Liveübertragungss...

Vollständiger Vue-Code zur Implementierung der Single-Sign-On-Steuerung

Hier ist zu Ihrer Information eine Vue-Single-Sig...

Was ist Nginx-Lastausgleich und wie wird er konfiguriert?

Was ist Lastenausgleich? Der Lastausgleich wird h...

5 Befehle zur Verwendung des Rechners in der Linux-Befehlszeile

Hallo zusammen, ich bin Liang Xu. Bei der Verwend...

So kompilieren Sie den Linux-Kernel

1. Laden Sie die erforderliche Kernel-Version her...

HTML validieren HTML-Validierung

„HTML-Validierung“ bezieht sich auf die HTML-Valid...

Detaillierte Erklärung der HTML-Tabellen

Funktion: Datenanzeige, Tabellenanwendungsszenari...

Zusammenfassung der Grundlagen der Vue-Komponenten

Komponentengrundlagen 1 Wiederverwendung von Komp...

Serviceverwaltung der Quellpaketinstallation unter Linux

Inhaltsverzeichnis 1. Startverwaltung des Quellpa...