Docker fügt eine Brücke hinzu und legt den IP-Adressbereich fest

Docker fügt eine Brücke hinzu und legt den IP-Adressbereich fest

Ich weiß nicht, ob es daran liegt, dass die Binärversion von Docker 19.03 nach der Installation die Docker0-Brücke nicht automatisch erstellt, oder ob es aus einem anderen Grund im Docker-Netzwerkmodus keine Brücke gibt.

Ich habe einen Container installiert, um den Port zuzuordnen, konnte den Port jedoch nicht sehen und es wurde kein Fehler gemeldet. Ich habe lange damit verbracht, ihn zu finden, bevor ich herausfand, dass es keine solche Brücke gab.

Ohne weitere Umschweife. Lasst uns anfangen!

Werfen wir einen Blick auf die aktuelle Situation:

Da es sich um eine Produktionsumgebung handelt, muss der Pod zuerst entfernt werden, um eine Beeinträchtigung des Geschäftsbetriebs zu vermeiden.

Erstens ist es nicht möglich, Docker Network Create xx direkt zu verwenden. Da die auf diese Weise erstellte Brücke nicht an die virtuelle Maschine angeschlossen ist, funktioniert sie nicht und erfordert möglicherweise eine andere zusätzliche Konfiguration. Ich werde hier nicht näher darauf eingehen. Um Fallstricke zu vermeiden, erwähnen Sie dies einfach.

Der gesamte Vorgang ist in der folgenden Abbildung deutlich sichtbar. Zu Ihrer Bequemlichkeit habe ich den Befehl auch kopiert.

[root@dashuaibi-server-103 jpserver]# ip a|grep docker0
[root@dashuaibi-server-103 jpserver]# brctl -h
Verwendung: brctl [Befehle]
Befehle:
 addbr <Brücke> Brücke hinzufügen
 delbr <Brücke> Brücke löschen
 addif <bridge> <device> Schnittstelle zur Bridge hinzufügen
 delif <bridge> <device> Schnittstelle von der Bridge löschen
 Haarnadelkurve <Brücke> <Port> {on|off} Haarnadelkurve ein-/ausschalten
 setageing <bridge> <time> Alterungszeit festlegen
 setbridgeprio <bridge> <prio> Brückenpriorität festlegen
 setfd <Brücke> <Zeit> Brücken-Weiterleitungsverzögerung festlegen
 sethello <Brücke> <Zeit> setze Begrüßungszeit
 setmaxage <bridge> <time> Maximales Nachrichtenalter festlegen
 setpathcost <Brücke> <Port> <Kosten> Pfadkosten festlegen
 setportprio <bridge> <port> <prio> Portpriorität festlegen
 show [ <bridge> ] zeigt eine Liste der Brücken
 showmacs <bridge> zeigt eine Liste von Mac-Adressen
 showstp <bridge> zeigt Bridge-STP-Informationen
 stp <bridge> {on|off} stp ein-/ausschalten
[root@dashuaibi-server-103 jpserver]# brctl addbr docker0
[root@dashuaibi-server-103 jpserver]# IP-Link-Set Docker0 hoch
[root@dashuaibi-server-103 jpserver]# IP-Adresse hinzufügen 192.168.0.0/16 dev docker0
[root@dashuaibi-server-103 jpserver]# cat /etc/docker/daemon.json 
{"data-root": "/docker","bridge": "keine","registry-mirrors": ["http://9b2cd203.m.daocloud.io"]}
[root@dashuaibi-server-103 jpserver]# vim /etc/docker/daemon.json 
[root@dashuaibi-server-103 jpserver]# cat /etc/docker/daemon.json 
{"data-root": "/docker","bridge": "docker0","registry-mirrors": ["http://9b2cd203.m.daocloud.io"]}
[root@dashuaibi-server-103 jpserver]# systemctl daemon-reload
[root@dashuaibi-server-103 jpserver]# systemctl Neustart Docker
[root@dashuaibi-server-103 jpserver]# ip a|grep docker0
149: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue status UNBEKANNT group default qlen 1000
 inet 192.168.0.1/16 brd 192.168.255.255 Bereich global docker0
[root@dashuaibi-server-103 jpserver]# Docker-Netzwerk ls
NETZWERK-ID-NAME TREIBER-UMFANG
edd34bc4e197 Brücke Brücke lokal
9560af3573ae Host Host lokal
22885d053744 keine null lokal
[root@dashuaibi-server-103 jpserver]#

Nach dem Neustart führen Sie den Container, dem der Port zugeordnet werden soll, erneut aus. Der Vergleich sieht wie folgt aus. Wenn zuvor keine Brücke hinzugefügt wurde, gibt es keinen Port. Nach dem Hinzufügen der Brücke. Portmapping ist normal

Der letzte Schritt besteht darin, den Fleck zu entfernen und die Planung des Knotens fortzusetzen.

kubectl uncordon 10.168.0.103

Ergänzung: Docker ändert die Standard-Bridge-IP-Adresse 172.17.0.1

Wenn der Docker-Dienst gestartet wird, wird standardmäßig eine Docker0-Brücke erstellt (mit einer internen Docker0-Schnittstelle), die andere physische oder virtuelle Netzwerkkarten auf der Kernelebene verbindet und alle Container und den lokalen Host in dasselbe physische Netzwerk stellt.

Standardmäßig gibt Docker die IP-Adresse und Subnetzmaske der Docker0-Schnittstelle an, sodass Host und Container über die Brücke miteinander kommunizieren können. Außerdem wird die MTU (die maximale Übertragungseinheit, die von der Schnittstelle empfangen werden darf) angegeben, die normalerweise 1500 Byte beträgt, oder der vom Host-Netzwerkrouting unterstützte Standardwert. Diese Werte können beim Start des Dienstes konfiguriert werden.

Sie können die Datei /etc/docker/daemon.json bearbeiten und den Inhalt „bip“ hinzufügen: „ip/netmask“ [Verwenden Sie nicht dasselbe Netzwerksegment wie der Host]

[root@localhost /]# vi /etc/docker/daemon.json 
{"bip":"192.168.100.1/24"}
systemctl Neustart Docker

Hinweis: Ich verstehe, dass die Änderung meines Freundes nicht erfolgreich war und er brctl verwendet hat, um die Brücke zu löschen. Tatsächlich lag es nur daran, dass Sie sie nicht richtig konfiguriert haben.

Einige daemon.json-Dateien enthalten beispielsweise Inhalt:

{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]} Dies ist ein privates Repository für Docker

{"Registrierungsspiegel": ["http://f1361db2.m.daocloud.io"]}
{"bip":"172.16.0.1/24"}

Diese Änderung wird nicht wirksam.

{"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"bip":"172.16.0.1/24"}

Dies ist die richtige Art, es zu ändern.

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Erläuterung der Docker Compose-Netzwerkeinstellungen
  • Eine kurze Diskussion über die Docker-Compose-Netzwerkeinstellungen
  • Docker-Benutzerdefinierte Brücke Docker0 und Befehlsvorgänge zum Öffnen, Schließen und Neustarten von Docker
  • Eine Fehlerbehebungserfahrung im CentOS-Docker-Bridge-Modus, bei dem auf den Host-Redis-Dienst nicht zugegriffen werden kann
  • Docker-Compose erstellt eine Brücke, fügt ein Subnetz hinzu und löscht eine Netzwerkkarte

<<:  Wann ist die Verwendung von dl, dt und dd sinnvoll?

>>:  Verwenden Sie CSS-Variablen, um coole und erstaunliche Schwebeeffekte zu erzielen

Artikel empfehlen

Drei Beispiele für Unschärfe-Hintergrundeffekte mit CSS3

Beginnen wir nicht mit der Einleitung, sondern ko...

Vue implementiert rekursiv ein dreistufiges Menü

In diesem Artikelbeispiel wird der spezifische Co...

Tutorial zur Installation und Konfiguration von MySQL für Mac

In diesem Artikel finden Sie das MySQL-Installati...

So verwenden Sie den Linux-Befehl „more“ in allgemeinen Linux-Befehlen

more ist eines unserer am häufigsten verwendeten ...

So verwenden Sie ein HTML-Formular mit mehreren Beispielen

Neun einfache Beispiele analysieren die Verwendun...

Verwendung von Docker-Image-Speicher-Overlays

1. Übersicht Das Image in Docker ist in Schichten...

JavaScript-Canvas zum Laden von Bildern

In diesem Artikel wird der spezifische Code von J...

Analyse der zum Ausführen von Docker erforderlichen Berechtigungen

Zum Ausführen von Docker sind Root-Rechte erforde...

js und jquery, um einen Tab-Statusleisten-Umschalteffekt zu erzielen

Heute werden wir einen einfachen Fall durchgehen ...

Implementierung von 2D- und 3D-Transformationen in CSS3

CSS3 implementiert 2D-Ebenentransformation und vi...