Docker-Bindung mit fester IP/Hostübergreifender Container-Gegenzugriffsvorgang

Docker-Bindung mit fester IP/Hostübergreifender Container-Gegenzugriffsvorgang

Vorwort

Bisher waren statische IPs, die über Pipework zugewiesen wurden, temporär und wurden nach einem Neustart ungültig. Darüber hinaus befanden sich die IPs von physischen Maschinen, virtuellen Maschinen und über Pipework gebundenen Docker-Containern alle im selben Netzwerksegment, was in einer Produktionsumgebung sehr schwierig war. Jetzt verwenden wir Dockers eigenes Netzwerk, um eine feste IP-Zuweisung zu implementieren, die nach einem Neustart nicht verschwindet.

Umgebungseinführung

Server-IP Netzwerksegment Containerzuteilung Die ID des zu startenden Containers
192.168.1.105 172.172.0.0/24 172.172.0.10
192.168.1.106 172.172.1.0/24 172.172.1.10

Bindungsschritte

Betreiben Sie zunächst die virtuelle Maschine 192.168.1.105

Schritt 1: Erstellen Sie ein benutzerdefiniertes Netzwerk

Docker-Netzwerk erstellen --subnet=172.172.0.0/24 docker-br0

Hinweis: Hier ist das Netzwerksegment 172.172.0.0 ausgewählt, Sie können aber auch jedes andere freie Netzwerksegment angeben. docker-br0 ist der Name der benutzerdefinierten Bridge, die beliebig benannt werden kann.

Hinweis: Die Subnetzmaske sollte hier 255.255.255.0 sein, also die 24 nach der IP, da ich später iptables zum Konfigurieren der Routing-Tabelle verwenden werde. Ich habe vorher 255.255.0.0 verwendet und es ließ sich nicht konfigurieren. Also habe ich es hier auf 24 konfiguriert.

Nachdem Sie die Bridge erstellt haben, können Sie mit ifconfig eine weitere Bridge anzeigen, die nach dem Start bzw. Neustart von Docker automatisch angezeigt wird. Sie können die Brücke dauerhaft mit „Docker Network RM Docker-br0“ entfernen.

Schritt 2: Wählen Sie eine beliebige IP-Adresse in Ihrem benutzerdefinierten Netzwerksegment als die IP-Adresse aus, unter der Sie den Container starten möchten

docker run -i -d --net docker-br0 --ip 172.172.0.10 --name nginx -v /usr/local/software/:/mnt/software/ 3bee3060bfc8 /bin/bash

Hinweis: Beim Erstellen des Containers wurde im ersten Schritt als statische IP-Adresse im erstellten Netzwerksegment 172.172.0.10 ausgewählt. Und beginnen Sie mit der Docker-br0-Bridge. -v steht für Mount und gibt an, welches lokale Verzeichnis im Container gemountet werden muss. 3bee3060bfc8 ist die Bild-ID

Verwenden Sie docker exec -it nginx /bin/bash, um den gestarteten Container aufzurufen, verwenden Sie yum install net-tools, um iptables herunterzuladen, und verwenden Sie dann ifconfig, um die Container-IP anzuzeigen.

Schritt 3: Testen Sie, ob der lokale Computer und der Container sich gegenseitig anpingen können

#Test-Ping Baidu [root@e98109ef9fd6 /]# ping www.baidu.com
PING www.a.shifen.com (119.75.213.61) 56(84) Bytes Daten.
64 Bytes von 119.75.213.61 (119.75.213.61): icmp_seq=1 ttl=56 Zeit=10,1 ms
64 Bytes von 119.75.213.61 (119.75.213.61): icmp_seq=2 ttl=56 Zeit=8,26 ms
 
#Testhost [root@e98109ef9fd6 /]# ping 192.168.1.105
PING 192.168.1.105 (192.168.1.105) 56(84) Bytes Daten.
64 Bytes von 192.168.1.105: icmp_seq=1 ttl=64 Zeit=0,099 ms
64 Bytes von 192.168.1.105: icmp_seq=2 ttl=64 Zeit=0,081 ms
 
#Test-Ping einer anderen virtuellen Maschine [root@e98109ef9fd6 /]# ping 192.168.1.106
PING 192.168.1.106 (192.168.1.106) 56(84) Bytes Daten.
64 Bytes von 192.168.1.106: icmp_seq=1 ttl=63 Zeit=1,67 ms
64 Bytes von 192.168.1.106: icmp_seq=2 ttl=63 Zeit=0,587 ms

An diesem Punkt ist die Bindung einer festen IP-Adresse an den Container abgeschlossen. Im Folgenden wird beschrieben, wie Container über Hosts hinweg aufeinander zugreifen können.

Hostübergreifender Containerzugriff

Schritt 4: Binden Sie auf der virtuellen Maschine 192.168.1.106 den Container an eine feste IP-Adresse, indem Sie die oben beschriebenen Schritte 1 bis 3 befolgen.

Schritt 5: Greifen Sie in den beiden Containern aufeinander zu und stellen Sie fest, dass der hostübergreifende Containerzugriff nicht angepingt werden kann.

[root@e98109ef9fd6 /]# ping 172.172.1.10
PING 172.172.1.10 (172.172.1.10) 56(84) Bytes Daten.
Von 192.168.1.105 icmp_seq=1 Zielhost nicht erreichbar
Von 192.168.1.105 icmp_seq=2 Zielhost nicht erreichbar
Von 192.168.1.105 icmp_seq=3 Zielhost nicht erreichbar
 
[root@e98109ef9fd6 /]# ping 172.172.0.10
PING 172.172.0.10 (172.172.0.10) 56(84) Bytes Daten.
Von 192.168.1.106 icmp_seq=1 Zielhost nicht erreichbar
Von 192.168.1.106 icmp_seq=2 Zielhost nicht erreichbar
Von 192.168.1.106 icmp_seq=3 Zielhost nicht erreichbar

Schritt 6: Konfigurieren der Routingtabelle

#Routingregeln hinzufügen

ip route add Das IP-Netzwerksegment/Subnetzmaske des anderen Containers über Das IP-Gerät der anderen virtuellen Maschine kommuniziert über welche Netzwerkkarte

wie:

IP-Route hinzufügen 172.172.1.0/24 über 192.168.1.106 dev eno16777736

Nach dem Hinzufügen können Sie den Route-Befehl verwenden, um die hinzugefügten Regeln anzuzeigen, oder „ip route del 172.172.1.0/24“ verwenden, um die Routing-Regeln zu entfernen.

Fügen Sie entsprechende Routing-Regeln auf den virtuellen Maschinen 192.168.1.105 bzw. 192.168.1.106 hinzu!

192.168.1.105: IP-Route hinzufügen 172.172.1.0/24 über 192.168.1.106 dev eno16777736

192.168.1.106: IP-Route hinzufügen 172.172.0.0/24 über 192.168.1.105 dev eno16777736

Schritt 7: Greifen Sie in den beiden Containern aufeinander zu und stellen Sie fest, dass die hostübergreifenden Container sich gegenseitig anpingen können.

[root@e98109ef9fd6 /]# ping 172.172.1.10
PING 172.172.1.10 (172.172.1.10) 56(84) Bytes Daten.
64 Bytes von 172.172.1.10: icmp_seq=1 ttl=62 Zeit=0,636 ms
64 Bytes von 172.172.1.10: icmp_seq=2 ttl=62 Zeit=0,411 ms
64 Bytes von 172.172.1.10: icmp_seq=3 ttl=62 Zeit=0,472 ms
 
[root@8343ad7e7f0f /]# ping 172.172.0.10
PING 172.172.0.10 (172.172.0.10) 56(84) Bytes Daten.
64 Bytes von 172.172.0.10: icmp_seq=1 ttl=62 Zeit=0,920 ms
64 Bytes von 172.172.0.10: icmp_seq=2 ttl=62 Zeit=0,674 ms
64 Bytes von 172.172.0.10: icmp_seq=3 ttl=62 Zeit=0,657 ms

Zusätzliche Kenntnisse: Docker-Compose-Benutzerdefiniertes Netzwerk, feste Container-IP-Adresse

Aufgrund des Standard-Bridge-Netzwerks ändert sich die IP-Adresse nach dem Neustart des Containers. In einigen Szenarien möchten wir die Container-IP-Adresse korrigieren.

Docker-Compose ist ein Orchestrierungstool für Docker, das Netzwerke, Container usw. relativ zum Befehlsmodus erstellt.

Die Verwendung von Konfigurationsdateien ist relativ bequemer und ermöglicht die Aufspürung von Problemen.

Fügen Sie die Datei docker-compose.yml direkt ein

Version: '2'
Leistungen:
  nginx:
   Bild: nginx:1.13.12
   Containername: nginx
   Neustart: immer
   tty: wahr
   Netzwerke:
     extnetwork:
      IPv4-Adresse: 172.19.0.2
 
Netzwerke:
  extnetwork:
   ipam:
     Konfiguration:
     - Subnetz: 172.19.0.0/16
      Gateway: 172.19.0.1

veranschaulichen:

gateway ist die Gateway-Adresse

Subnetz ist das Netzwerksegment

extnetwork ist ein benutzerdefinierter Netzwerkname

In der obigen Konfiguration hat unser Nginx-Container eine feste IP von 172.19.0.2

Beispiel, benutzerdefinierter Netzwerkmodus:

Version: '2'
Leistungen:
  nginx:
   Bild: nginx:1.13.12
   Containername: nginx
   Neustart: immer
   Netzwerke:
     extnetwork:
   Häfen:
     - 80:80
   Bände:
     – „/nginx/conf.d:/etc/nginx/conf.d“
  nginx2:
   Bild: nginx:1.13.12
   Containername: nginx2
   Neustart: immer
   Netzwerke:
     extnetwork:
      IPv4-Adresse: 172.19.0.2
     
  db:
   Bild:mysql:5.7
   Containername: db
   Bände:
    – /var/lib/mysql:/var/lib/mysql
   Neustart: immer
   Netzwerke:
     extnetwork:
   Häfen:
     -3306:3306
   Umfeld:
    MYSQL_ROOT_PASSWORD: WordPress
    MYSQL_DATABASE: WordPress
    MYSQL_USER: WordPress
    MYSQL_PASSWORD: wordpress   
  
  Wordpress:
   Bild: wordpress:latest
   Containername: WordPress
   hängt ab von:
     -db
   Häfen:
     - "8000:80"
   Neustart: immer
   Netzwerke:
     extnetwork:
   Umfeld:
     WORDPRESS_DB_HOST: db:3306
     WORDPRESS_DB_NAME: WordPress
     WORDPRESS_DB_USER: WordPress
     WORDPRESS_DB_PASSWORD: WordPress
Netzwerke:
  extnetwork:
   ipam:
     Konfiguration:
     - Subnetz: 172.19.0.0/16
      Gateway: 172.19.0.1

Der obige Artikel über Docker-Binding mit fester IP/Host-übergreifenden Container-Gegenzugriffsvorgängen ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • So korrigieren Sie die IP-Einstellungen in Docker
  • Docker kann nicht an eine statische feste IP-Adresse eines externen Netzwerks gebunden werden und seine Lösung
  • Detaillierte Erklärung zur festen IP-Zuweisung für Docker-Container
  • Docker-Container gibt eine feste IP/statische IP-Adresse in einem benutzerdefinierten Netzwerksegment an
  • So konfigurieren Sie eine feste IP und eine Bridge in Docker
  • Implementierung der Festlegung einer festen IP beim Starten eines Docker-Containers

<<:  Konvertieren von XHTML-CSS-Seiten in Druckerseiten

>>:  Anweisungen zur Verwendung der MySQL-IndexOF-Funktion

Artikel empfehlen

Über das durch die HTML-Kodierung verursachte verstümmelte Problem

Heute hat ein Student im dritten Studienjahr eine...

Details zum Schreiben von React in einem Vue-Projekt

Wir können jsx/tsx-Dateien direkt erstellen Die P...

Transplantieren des Befehls mkfs.vfat in Busybox unter Linux

Um die Lebensdauer der Festplatte zum Speichern v...

Tutorial zum Ändern von Inline-Stilen von element.style

Vorwort Als wir den Stil der Webseite oben geschr...

Mehrere Möglichkeiten zum Speichern von Bildern in einer MySQL-Datenbank

Normalerweise müssen die von Benutzern hochgelade...

Neunundvierzig JavaScript-Tipps und Tricks

Inhaltsverzeichnis 1. Betrieb von js Integer 2. S...

Lösung für den Apache-Cross-Domain-Ressourcenzugriffsfehler

In vielen Fällen platzieren große und mittelgroße...

Allgemeine Funktionen der MySQL-Grundlagen

Inhaltsverzeichnis 1. Allgemeine Funktionsklassif...

Detaillierte Erklärung der Datentypen in den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...

Detaillierte Erklärung der Eigenschaften und Funktionen von Vuex

Inhaltsverzeichnis Was ist Vuex? Fünf Eigenschaft...

Super detaillierter GCC-Upgrade-Prozess unter Linux

Inhaltsverzeichnis Vorwort 1. Aktuelle gcc-Versio...

JavaScript-Canvas zum Erzielen von Regentropfeneffekten

In diesem Artikelbeispiel wird der spezifische Co...