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
Bindungsschritte Betreiben Sie zunächst die virtuelle Maschine 192.168.1.105 Schritt 1: Erstellen Sie ein benutzerdefiniertes Netzwerk
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
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:
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!
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:
|
<<: Konvertieren von XHTML-CSS-Seiten in Druckerseiten
>>: Anweisungen zur Verwendung der MySQL-IndexOF-Funktion
Einführung Es ist in Ordnung, am Ende eines JS-Co...
Heute hat ein Student im dritten Studienjahr eine...
Wir können jsx/tsx-Dateien direkt erstellen Die P...
Um die Lebensdauer der Festplatte zum Speichern v...
Vorwort Als wir den Stil der Webseite oben geschr...
Normalerweise müssen die von Benutzern hochgelade...
Inhaltsverzeichnis 1. Betrieb von js Integer 2. S...
1. Zusätzlich zum Standardport 8080 versuchen wir...
In vielen Fällen platzieren große und mittelgroße...
Inhaltsverzeichnis 1. Allgemeine Funktionsklassif...
Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...
Inhaltsverzeichnis Was ist Vuex? Fünf Eigenschaft...
Inhaltsverzeichnis Vorwort 1. Aktuelle gcc-Versio...
Kapitel 1: Einführung in Keepalived Der Zweck des...
In diesem Artikelbeispiel wird der spezifische Co...