Docker-Compose erstellt eine Brücke, fügt ein Subnetz hinzu und löscht eine Netzwerkkarte

Docker-Compose erstellt eine Brücke, fügt ein Subnetz hinzu und löscht eine Netzwerkkarte

1. Erstellen Sie eine Docker-Netzwerkkarte

[root@i ~]# brctl addbr docker0
[root@i ~]# IP-Adresse hinzufügen 192.168.42.1/24 dev docker0  
# Die IP hier ist für die interne Verwendung in Docker, Sie können jede beliebige konfigurieren[root@i ~]# ip link set dev docker0 up
[root@i ~]# IP-Adresse zeigt Docker0
# Docker anzeigen
[root@i ~]# systemctl Neustart Docker
[root@i ~]# systemctl Neustart Docker
# Starten Sie den Docker-Dienst

2. Fügen Sie ein Subnetz hinzu

[root@i ~]# Docker-Netzwerk, Backend erstellen
# Auf diese Weise haben wir das Backend-Subnetz erstellt, und Docker-Compose kann dieses Netzwerk direkt verwenden
# Wenn das Subnetz nicht üblich ist, verwenden Sie den folgenden Befehl, um das Sicherheitsproblem zu überspringen [root@i ~]# docker network create backend --subnet 172.24.24.0/24
 
[root@i ~]# Docker-Netzwerk ls
NETZWERK-ID-NAME TREIBER-UMFANG
6afff4d90f05 Backend-Brücke lokal
57de7f32064e Brücke Brücke lokal
4b44a5340d6e Host Host lokal
ac8e8ffe243f keine null lokal

Hier sehen Sie das Backend

3. Löschen Sie die Netzwerkkarte

[root@i ~]# brctl anzeigen
#Überprüfen Sie den Bridge-Status Bridge-Name Bridge-ID STP-fähige Schnittstellen
br-5db3fa0c465f 8000.02424cfb3937 nein veth038d483
                            veth2950f5c
                            veth669dc5e
                            veth715203f
                            veth9f31643
                            vethd0f5330
docker0 8000.3a4803cd6298 nein veth9d3badb
                            vethd7530fd
[root@i ~]# brctl delif <Brückenname> <Portname>
#Deinstallieren Sie den Port auf der Bridge [root@i ~]# ifconfig
# Prüfen Sie, ob eine Bridge-Netzwerkkarte mit dem Namen [root@i ~]# vorhanden ist ifconfig <bridge name> down
#Schalten Sie diese Netzwerkkarte aus[root@i ~]# brctl delbr <Bridge-Name>
#Lösche die Brücke

Ergänzung: Die ultimative Lösung für den Konflikt zwischen der von Docker-Compose automatisch erstellten Brücke und dem LAN

1. Problembeschreibung

Wenn Sie Docker-Compose zum Bereitstellen von Anwendungen verwenden, ist der Standardnetzwerkmodus von Docker Bridge und das Standardnetzwerksegment 172.17.0.1/16. Leider verwendet das LAN unserer eigenen physischen Maschine auch das Netzwerksegment 172.18.0.1/16.

Nach der Ausführung von docker-compose -f docker-compose.yml up -d zum Bereitstellen des Dienstes verwendet die automatisch generierte Bridge wiederum 172.18.xx, aber etwas Trauriges ist passiert. Die von Docker generierte Brücke steht in Konflikt mit dem lokalen Netzwerk.

So begann die lange Reise zur Baidu-Programmierung ... Allerdings fand ich über Baidu und Google immer wieder viele Blogs, die voneinander kopiert waren, und versuchte es schließlich immer wieder und scheiterte, konnte mein Problem jedoch letztendlich nicht lösen. Daher wurde dieser Artikel mit einem Goldgehalt von 99,99999999999999999999999999 % veröffentlicht.

Docker-Version für dieses Experiment

[root@node100 docker-compose]# docker info | grep 'Serverversion'
 Serverversion: 19.03.12

2. Lösung

Stoppen Sie den von Docker-Compose erstellten Container

docker-compose -f docker-compose.yml down

Docker-Container manipulieren

# Stoppen Sie den Docker-Container sudo systemctl stop docker
# Stoppen Sie die Docker0-Brücke sudo ip link set dev docker0 down
# Löschen Sie die Docker0-Brücke sudo brctl delbr docker0
# Iptables zurücksetzen
sudo iptables -t nat -F POSTROUTING

PS

# Linux-Brctl-Befehl nicht gefunden, installieren Sie Brctl 
yum installiere Bridge-Utils -y

daemon.json ändern

# Bearbeiten Sie die Datei daemon.json vim /etc/docker/daemon.json
# Fügen Sie den folgenden Inhalt hinzu, einschließlich der Einstellung des IP-Segments des Docker-Containers „default-address-pools“: [
  {
   "Basis": "192.168.0.0/16",
   "Größe" : 24
  }
]

PS

Hinweis: Wenn daemon.json andere Inhalte enthält, denken Sie daran, diese durch Kommas zu trennen.

Starten Sie den Docker-Container neu

sudo systemctl daemon-reload
sudo systemctl starte Docker

Installieren Sie den Docker-Compose-Befehl neu und starten Sie ihn

docker-compose -f docker-compose.yml up -d

3. Expansionsplan

Klicken Sie hier, um einige Lösungen von ISSUES-Meistern zu erhalten

Lösung 1

Lösung 2

Option 3

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 fügt eine Brücke hinzu und legt den IP-Adressbereich fest
  • 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

<<:  Deaktivieren der AutoVervollständigen-Funktion im Eingabefeld

>>:  Vergleich von CSS-Schatteneffekten: Schlagschatten und Box-Schatten

Artikel empfehlen

Detaillierte Erklärung der Docker-Maschinennutzung

Docker-Machine ist ein offiziell von Docker berei...

So verwenden Sie CURRENT_TIMESTAMP in MySQL

Inhaltsverzeichnis Verwendung von CURRENT_TIMESTA...

TortoiseSvn Little Turtle Installation Neuestes ausführliches Grafik-Tutorial

Bei der Installation von tortoiseGit gab es immer...

Installationsprozess von MySQL5.7.22 auf dem Mac

1. Verwenden Sie das Installationspaket, um MySQL...

Fehler mit ungerader Breite und Höhe in IE6

Wie in der Abbildung gezeigt: Aber bei der Anzeig...

Mehrere Möglichkeiten zur manuellen Implementierung von HMR in Webpack

Inhaltsverzeichnis 1. Einleitung 2. GitHub 3. Gru...

Die ultimative Lösung zum Schreiben von Bash-Skripten mit Node.js

Inhaltsverzeichnis Vorwort zx-Bibliothek $`Befehl...

Zabbix benutzerdefinierte Überwachung Nginx Status Implementierungsprozess

Inhaltsverzeichnis Zabbix benutzerdefinierte Über...

So lösen Sie das Problem des verstümmelten MySQL-Inserts

Problembeschreibung: Beim Einfügen chinesischer Z...

JavaScript zum Erzielen eines Produktlupeneffekts

In diesem Artikel wird der spezifische JavaScript...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15

In diesem Artikel wird die Installations- und Kon...

Die Verwendung und Methoden von async und await in JavaScript

asynchrone Funktion und await-Schlüsselwort in JS...