Heim > Artikel > Betrieb und Instandhaltung > Ausführliche Erklärung zum manuellen Hinzufügen einer Netzwerkbrücke mit Docker
In diesem Artikel wird hauptsächlich das Hinzufügen einer benutzerdefinierten Netzwerkbrücke in Docker vorgestellt. Der Herausgeber findet es ziemlich gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf
Wenn der Docker-Dienstprozess startet, generiert er eine Netzwerkbrücke mit dem Namen docker0. Der Container wird standardmäßig auf dieser Brücke gemountet, aber wir können Docker-Startparameter -b hinzufügen Birdge oder ändern Sie die Docker-Konfigurationsdatei, um auszuwählen, welche Bridge verwendet werden soll.
Betriebssystem: centos7
service docker stop //关闭docker服务 ip link set dev docker0 down //关闭docker0网桥 ip link del dev docker0 //删除docker0网桥
Benutzerdefinierte Bridge-Einstellungen (/etc/sysconfig/network-scripts/ wenncfg-br0-Datei)
DEVICE="br0" ONBOOT="yes" TYPE="Bridge" BOOTPROTO="static" IPADDR="10.10.10.20" NETMASK="255.255.255.0" GATEWAY="10.10.10.20" DEFROUTE="yes" NM_CONTROLLED="no"
Netzwerkdienst neu starten
service network restart
Netzwerkbrücke anzeigen
[black@test opt]$ brctl show bridge name bridge id STP enabled interfaces br0 8000.32e7297502be no virbr0 8000.000000000000 yes
Als nächstes müssen wir neu starten Wenn Sie Docker starten, können Sie beim Starten des Docker-Dienstprozesses die folgenden zwei Methoden verwenden:
Erste Methode: -b-Parameter gibt die Brücke an
[root@test opt]# docker -d -b br0 INFO[0000] Listening for HTTP on unix (/var/run/docker.sock) INFO[0000] [graphdriver] using prior storage driver "devicemapper" WARN[0000] Running modprobe bridge nf_nat failed with message: , error: exit status 1 INFO[0000] Loading containers: start. ...... INFO[0000] Loading containers: done. INFO[0000] Daemon has completed initialization INFO[0000] Docker daemon commit=786b29d execdriver=native-0.2 graphdriver=devicemapper version=1.7.1
Ich nicht Ich weiß nicht, warum das Starten des Docker-Service-Prozesses auf diese Weise das aktuelle Terminal blockiert (︶︿︶), also muss ich ein Terminal erneut öffnen und dann einen Container ausführen
[root@test shell]# docker run -ti --rm centos:latest [root@3c6874559411 /]# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:0A:0A:0A:01 inet addr:10.10.10.1 Bcast:0.0.0.0 Mask:255.255.255.0 inet6 addr: fe80::42:aff:fe0a:a01/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:418 (418.0 b) TX bytes:508 (508.0 b)
Der Container verwendet erfolgreich die br0-Brücke .
Zweitens: Ändern Sie die Datei /etc/sysconfig/docker
Bei diesem Vorgang ist ein kleines Problem aufgetreten. Ich habe /etc/sysconfig/docker geändert Datei
[root@test opt]# vi /etc/sysconfig/docker # /etc/sysconfig/docker # # Other arguments to pass to the docker daemon process # These will be parsed by the sysv initscript and appended # to the arguments list passed to docker -d other_args="-b br0"
Dann verwenden Sie service docker start, um den Docker-Dienst zu starten, aber other_args wird nicht wirksam. Unter Centos7 verwendet servicer docker start weiterhin den Befehl systemctl start docker.service, um ihn auszuführen Öffnen Sie /usr/lib/systemd/system/docker.service und überprüfen Sie
[root@test opt]# vi /lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] ExecStart=/usr/bin/docker -d -H fd:// MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity [Install] WantedBy=multi-user.target
und stellen Sie fest, dass das ExecStart-Element keine Laufparameter hat, also ändere ich ExecStart in /usr/bin/docker -d -b br0 - H fd://, führen Sie den Docker-Dienst aus, starten Sie einen Container und stellen Sie fest, dass die br0-Brücke erfolgreich verwendet werden kann.
Ich habe im Internet eine bessere Methode gesehen: Ändern Sie docker.service wie folgt
[black@test ~]$ vi /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] EnvironmentFile=-/etc/sysconfig/docker ExecStart=/usr/bin/docker -d $other_args -H fd:// MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity [Install] WantedBy=multi-user.target
Zu diesem Zeitpunkt sind die in other_args hinzugefügten Parameter wirksam.
[Verwandte Empfehlungen]
1. Kostenloses MySQL-Video-Tutorial
2. Detaillierte Erklärung von innodb_index_stats beim Importieren von Daten Fehler beim Primärschlüsselkonflikt in der Eingabeaufforderungstabelle
3. Was soll ich tun, wenn beim Dekomprimieren von ZIP-Dateien unter Linux verstümmelte Zeichen angezeigt werden? Lernen Sie, wie Sie die Partitionsgröße unter Linux anpassenWie erkennt Linux ServernetzwerkbedingungenDas obige ist der detaillierte Inhalt vonAusführliche Erklärung zum manuellen Hinzufügen einer Netzwerkbrücke mit Docker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!