Docker realisiert die Verbindung mit demselben IP-Netzwerksegment

Docker realisiert die Verbindung mit demselben IP-Netzwerksegment

Vor Kurzem habe ich das Problem gelöst, dass Docker und Host im selben Netzwerksegment kommunizieren, und diesen Artikel geschrieben, um den gesamten Vorgang aufzuzeichnen.

Zum Beispiel

Host A und Host B sind über ein Netzwerk verbunden. Auf Host A werden mehrere Container erstellt, um einen Cluster zu bilden, aber ich hoffe, über Host B auf den Container von Host A zugreifen zu können. Natürlich können Sie auch sagen, dass die Portzuordnung sehr praktisch ist. Wenn ich mehr Ports benötige oder vorübergehend einige Ports hinzufügen muss, kann die Einrichtung mühsam sein. Wenn wir dann die IP des Containers auf Host A und die IP des Hosts im selben Netzwerk eingeben, können wir sie dann nicht direkt miteinander verbinden?

1. Docker installieren (Linux-Server)

Docker installieren

yum installiere Docker

2. Verwenden Sie Pipework, um eine unabhängige IP für den Docker-Container zu konfigurieren

Nach der Installation des Pipework-Tools können Sie mit einem Befehl die IP-Adresse des Containers ändern oder genauer gesagt der Container-IP-Adresse eine neue Netzwerkkarte hinzufügen.

wget https://github.com/jpetazzo/pipework/archive/master.zip
entpacken Sie master.zip 
cp pipework-master/pipework /usr/local/bin/
chmod +x /usr/local/bin/pipework

3. Bearbeiten Sie die IP-Konfigurationsdatei eh0

Bearbeiten Sie die Standard-IP-Konfigurationsdatei eth0 oder ens33 (verschiedene Betriebssysteme haben unterschiedliche Namen, beispielsweise lautet der Name der Maschine, die ich betreibe, ifcfg-ens33).
vim /etc/sysconfig/network-scripts/ifcfg-ens33

Geben Sie i ein, um in den Bearbeitungsmodus zu wechseln und kopieren Sie den folgenden Inhalt in die Datei

TYP=Ethernet
PROXY_METHOD=keine
BROWSER_ONLY=nein
BOOTPROTO=dhcp
DEFROUTE=ja
IPV4_FAILURE_FATAL=nein
IPV6INIT=ja
IPV6_AUTOCONF=ja
IPV6_DEFROUTE=ja
IPV6_FAILURE_FATAL=nein
IPV6_ADDR_GEN_MODE=stabiler Datenschutz
NAME=ens33
UUID=36b40bc6-6775-4e02-8161-e245d0e3892f
GERÄT=ens33
#Das Folgende ist die Einstellung für den Überbrückungsteil ONBOOT=yes
BRÜCKE=br0
PEERDNS=ja
PEERROUTES=ja
IPV6_PEERDNS=ja
IPV6_PEERROUTES=ja

4. Erstellen Sie eine benutzerdefinierte Brücke br0

vim ifcfg-br0

Und kopieren Sie den Konfigurationsinhalt in die Konfigurationsdatei

 GERÄT=br0
 BOOTPROTO=statisch
 NM_CINTROLLER=nein
 ONBOOT=ja
 TYP=Brücke
 IPADDR=192.168.186.128
 NETMASK=255.255.255.0

Starten Sie den Netzwerkdienst der virtuellen Maschine neu

systemctl restart network

5. Ändern Sie die Docker-Konfigurationsdatei und geben Sie die Bridge an

Ändern Sie die Docker-Konfigurationsdatei /etc/sysconfig/

vim /etc/sysconfig/docker

Die Änderungen sind wie folgt

OPTIONEN='--selinux-enabled --log-driver=journald --signature-verification=false'

Geändert zu:

OPTIONEN='--selinux-enabled -b=br0'

Nach der Änderung:

# /etc/sysconfig/docker

# Ändern Sie diese Optionen, wenn Sie die Art und Weise ändern möchten, wie der Docker-Daemon ausgeführt wird
#OPTIONEN='--selinux-enabled --log-driver=journald --signature-verification=false'
OPTIONEN='--selinux-enabled -b=br0'
wenn [ -z "${DOCKER_CERT_PATH}" ]; dann
  DOCKER_CERT_PATH=/etc/docker
fi

# Fügen Sie dieser Datei keine weiteren Register hinzu. Verwenden Sie /etc/containers/registries.conf
# stattdessen. Weitere Informationen finden Sie auf der Manpage registries.conf(5).

# Speicherort für temporäre Dateien, wie sie beispielsweise erstellt werden von
# Docker-Lade- und Build-Operationen. Standard ist /var/lib/docker/tmp
# Kann durch Festlegen der folgenden Umgebungsvariable überschrieben werden.
# DOCKER_TMPDIR=/var/tmp

# Steuert den Status des Cron-Jobs /etc/cron.daily/docker-logrotate.
# Zum Deaktivieren heben Sie die Kommentierung der folgenden Zeile auf.
#LOGROTATE=false

# Der Docker-Latest-Daemon kann durch Starten der Docker-Latest-Unitfile verwendet werden.
# Um den Docker-Latest-Client zu verwenden, heben Sie die Kommentarzeichen unter den Zeilen auf
#DOCKERBINARY=/usr/bin/docker-latest
#DOCKERDBINARY=/usr/bin/dockerd-latest
#DOCKER_CONTAINERD_BINARY=/usr/bin/docker-containerd-latest
#DOCKER_CONTAINERD_SHIM_BINARY=/usr/bin/docker-containerd-shim-latest
other_args='-b br0'

5. Starten Sie den Docker-Dienst neu

systemctl Neustart Docker

6. Erstellen Sie eine Docker-Containerinstanz

docker run -itd --name test1 --net=none centos /bin/bash

--net=none bedeutet, dass die Netzwerkkarten des Containers alle leer sind und über Pipework angepasst werden müssen

7. Geben Sie die Netzwerkkarte an

Rohrleitung br0 test1 192.168.186.111/[email protected]

8. Geben Sie den Container ein und versuchen Sie, den Hostcomputer und die IP-Adresse im selben Netzwerksegment anzupingen, um zu sehen, ob der Ping erfolgreich ist.

# Geben Sie den Container Docker Attach Test1 ein
# Ping-Host Ping 192.168.186.22

8.1 Ändern Sie die Host-IP im selben Netzwerksegment

Ändern Sie die Host-IP und halten Sie das Netzwerksegment mit dem Bridge-IP-Segment von Host A konsistent. Nach der Einstellung können die Hosts A und B sich gegenseitig anpingen.

# Pingen Sie dieselbe Netzwerksegment-IP
Ping 192.168.186.33

An diesem Punkt ist die Kommunikation zwischen Docker-Netzwerken abgeschlossen.

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:
  • Korrekte Änderungsschritte für das Standardnetzwerksegment von Docker
  • So ändern Sie das Standardnetzwerksegment der Docker0-Brücke in Docker
  • Detaillierte Erläuterung der Docker-Container-Cross-Host-Multi-Netzwerksegment-Kommunikationslösung
  • Docker gibt eine IP-Adresse an, die sich im selben Netzwerksegment wie der Host befindet.
  • Wie weist Docker die IP des Host-Netzwerksegments zu?
  • Docker-Container gibt eine feste IP/statische IP-Adresse in einem benutzerdefinierten Netzwerksegment an
  • Analyse der Implementierungsmethode zum Ändern des Standardnetzwerksegments von Docker

<<:  Beispielcode zum Generieren eines QR-Codes mit js

>>:  Zusammenfassung der Tipps zur Verwendung von coalesce() in MySQL

Artikel empfehlen

Designtheorie: Zu den Themen Schema, Ressourcen und Kommunikation

<br />In vielen kleinen Unternehmen besteht ...

Zusammenfassung der allgemeinen Bedienungskenntnisse der MySQL-Datenbank

Dieser Artikel fasst gängige Betriebstechniken fü...

JavaScript zur Implementierung des Countdowns für den SMS-Versand

In diesem Artikel wird der spezifische JavaScript...

Tutorial zur Installation von MySQL 5.6 mit RPM in CentOS

Alle vorherigen Projekte wurden in der Windows-Sy...

Empfohlene Plugins und Anwendungsbeispiele für Vue-Unit-Tests

Inhaltsverzeichnis rahmen Erstklassiges Fehlerrep...

Implementierung der Wiederaufnahme des K8S-Knotens in den Master-Cluster

1. Knoten löschen Führen Sie kubectl delete node ...

So geben Sie Speicherplatz unter CentOS 6 oder CentOS 7 frei

Nachfolgend finden Sie die Schnellbefehle zum Fre...

Wissen Sie, wie Sie mit Vue-Cropper Bilder in Vue zuschneiden?

Inhaltsverzeichnis 1. Installation: 2. Verwendung...

JS Canvas realisiert die Funktionen von Zeichenbrett und Signaturtafel

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