Beispiel zum Starten eines Containers mit mehreren Netzwerkschnittstellen mithilfe von Docker

Beispiel zum Starten eines Containers mit mehreren Netzwerkschnittstellen mithilfe von Docker

Hinzufügen einer Netzwerkschnittstelle zum Container

1 Führen Sie einen Container mit dem Standardnetzwerkmodus aus

# docker run --name tst_add_inf -it tst_img /bin/bash

Auf diese Weise erstellen wir über das Image tst_img auf dem Hostcomputer einen Container mit dem Namen tst_add_inf. Dieser Container hat standardmäßig eine Netzwerkschnittstelle eth0 erstellt.

2 Holen Sie sich die PID des Containers

# docker inspect -f '{{.State.Pid}}' tst_add_inf

Die oben erhaltene PID des Containers ist die Prozess-PID des Containerprozesses 1 im Namespace des Hostcomputers.

3 Netzwerkschnittstelle eth1 zum Container hinzufügen

(1) Erstellen Sie ein Paar von Veth-Peer-Geräten

# IP-Link hinzufügen veth0 Typ veth Peer-Name veth1 

Nach der Erstellung können Sie die beiden neu erstellten Geräte über die „IP-Link-Liste“ sehen.

(2) Fügen Sie das V-Ende zur Brücke hinzu

# brctl addif docker0 veth0
# IP-Link einrichten veth0 

(3) Verbinden Sie das andere Ende von veth mit dem Container

# ln -s /proc/$pid/ns/net /var/run/netns/$container_id
# IP-Link-Set veth1 netns $pid

(4) Konfigurieren Sie die neu hinzugefügte Netzwerkschnittstelle des Containers

Benennen Sie die neue Schnittstelle in eth1 um und ändern Sie ihre IP-Adresse.

# ip netns exec $pid ip link set dev veth1 name eth1
# ip netns exec $pid lp link eth1 einrichten

Nachdem der Container aktiv ist, können Sie dies mit „Docker Network Connect“ tun, das bedeutet jedoch, dass der Prozess bereits ausgeführt wird und möglicherweise neue Prozesse verpasst.

Diese Frage ist eine Suche nach Docker und mehreren Netzwerkschnittstellen. Obwohl es nicht die erforderliche Version ist, hinterlasse ich hier einige Informationen:

Mit Docker 1.12 ist es möglich, einem Docker-Container mehrere Netzwerkschnittstellen hinzuzufügen. Sie müssen jedoch zuerst den Container erstellen und dann die zweite (und alle weiteren) Netzwerk-NICs anhängen, bevor Sie den Container starten:

$docker create --network=Netzwerk1 --name Containername Containerimage:neueste
$docker-Netzwerk verbinden Netzwerk2 Containername
$docker start Containername

Sie müssen zuerst ein Netzwerk erstellen:

$docker-Netzwerk erstellen --driver=bridge network1 --subnet=172.19.0.0/24
$docker-Netzwerk erstellen --driver=bridge network2 --subnet=172.19.1.0/24

Darüber hinaus können Sie einen Container mit der Dockerhost-Netzwerkschnittstelle starten, indem Sie den Parameter --network=host in docker run verwenden:

$docker run --net=host containerimage:latest

Übersetzt von: http://stackoverflow.com/questions/34110416/start-container-with-multiple-network-interfaces

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So implementieren Sie den Selbststart eines Docker-Containers
  • Beispiel für den automatischen Start eines Anwendungsdienstes in einem Docker-Container
  • Docker-Praxis: Fehlerbehebung beim Starten eines Containers aus einem neuen Image
  • Fügen Sie die Portzuordnung hinzu, nachdem der Docker-Container gestartet wurde
  • Flume in einem Docker-Container ausführen und starten, ohne laufende Protokolle auszugeben
  • Docker-Lernhinweise: So zeigen Sie Container an, starten, beenden und löschen sie
  • So rufen Sie den Startcontainer in Docker auf
  • Der Unterschied zwischen zwei Möglichkeiten zum Erstellen eines Docker-Images und Starten des Containers (Zusammenfassung)
  • Docker verwendet Dockerfile, um ein Container-Image zu erstellen, das den automatischen Start des SSH-Dienstes unterstützt

<<:  So verwenden Sie JSX in Vue

>>:  MySql-Anmeldekennwort vergessen und Lösung für vergessenes Kennwort

Artikel empfehlen

CSS3 realisiert den verschiebbaren Zauberwürfel-3D-Effekt

Hauptsächlich verwendete Wissenspunkte: •CSS3 3D-...

Eine kurze Analyse des Zeitproblems von MySQL

Der Standardzeittyp (Datum/Uhrzeit und Zeitstempe...

jQuery simuliert einen Picker, um einen gleitenden Auswahleffekt zu erzielen

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

Eine eingehende Analyse von MySQL erläutert die Verwendung und die Ergebnisse

Vorwort Bei unserer täglichen Arbeit führen wir m...

Detaillierte Analyse der Prinzipien und der Verwendung von MySQL-Ansichten

Vorwort: In MySQL sind Ansichten wahrscheinlich e...

Zusammenfassung der Diskussion zur Gültigkeitsdauer von Nginx-Cookies

Bei jedem Besuch wird im Browser Cookie generiert...

HTML-Beispielcode zur Implementierung des Tab-Wechsels

Tab-Umschalten ist auch eine gängige Technologie ...

4 Möglichkeiten zur Optimierung von MySQL-Abfragen für Millionen von Daten

Inhaltsverzeichnis 1. Der Grund, warum das Limit ...

React + Threejs + Swiper vollständiger Code zum Erzielen eines Panoramaeffekts

Schauen wir uns den Panorama-Effekt an: Adresse a...

Implementierung der durch Kommas getrennten MySQL-Split-Funktion

1: Definieren Sie eine gespeicherte Prozedur zum ...

Detaillierte Erläuterung des Ausführungsprozesses von MySQL-Abfrageanweisungen

Inhaltsverzeichnis 1. Kommunikationsmethode zwisc...

Ausführliches Tutorial zur Installation von MySQL 8.0.19 (Windows 64 Bit)

Inhaltsverzeichnis MySQL initialisieren MySQL-Die...

Schritte zur VSCode-Konfiguration mit der Git-Methode

Git ist in vscode integriert und viele Vorgänge k...