Wir alle wissen, dass Docker-Container voneinander isoliert sind und nicht aufeinander zugreifen können, aber was ist, wenn es abhängige Dienste gibt? Zur Lösung des Problems des gegenseitigen Containerzugriffs werden die folgenden drei Methoden vorgestellt. Methode 1: Virtueller IP-Zugriff Bei der Installation von Docker erstellt Docker standardmäßig ein internes Bridge-Netzwerk Docker0. Jedem erstellten Container wird eine virtuelle Netzwerkkarte zugewiesen, und Container können basierend auf der IP aufeinander zugreifen. [root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig ...... docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 Netzmaske 255.255.0.0 Broadcast 0.0.0.0 inet6 fe80::42:35ff:feac:66d8 Präfixlänge 64 Bereichs-ID 0x20<link> Ether 02:42:35:ac:66:d8 txqueuelen 0 (Ethernet) RX-Pakete 4018 Bytes 266467 (260,2 KiB) RX-Fehler 0 verloren 0 Überläufe 0 Frame 0 TX-Pakete 4226 Bytes 33935667 (32,3 MiB) TX-Fehler 0 verloren 0 Überläufe 0 Träger 0 Kollisionen 0 ...... Führen Sie ein CentOS-Image aus und überprüfen Sie die IP-Adresse: 172.17.0.7 [root@CentOS ~]# docker run -it --name centos-1 docker.io/centos:latest [root@6d214ff8d70a /]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.7 Netzmaske 255.255.0.0 Broadcast 0.0.0.0 inet6 fe80::42:acff:fe11:7 Präfixlänge 64 Bereichs-ID 0x20<link> Ether 02:42:ac:11:00:07 txqueuelen 0 (Ethernet) RX-Pakete 16 Bytes 1296 (1,2 KiB) RX-Fehler 0 verloren 0 Überläufe 0 Frame 0 TX-Pakete 8 Bytes 648 (648,0 B) TX-Fehler 0 verloren 0 Überläufe 0 Träger 0 Kollisionen 0 Führen Sie denselben Befehl aus, um einen weiteren Container zu starten und die IP-Adresse zu überprüfen: 172.17.0.8 [root@CentOS ~]# docker run -it --name centos-2 docker.io/centos:latest [root@33fcf82ab4dd /]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.8 Netzmaske 255.255.0.0 Broadcast 0.0.0.0 inet6 fe80::42:acff:fe11:8 Präfixlänge 64 Bereichs-ID 0x20<link> Ether 02:42:ac:11:00:08 txqueuelen 0 (Ethernet) RX-Pakete 8 Bytes 648 (648,0 B) RX-Fehler 0 verloren 0 Überläufe 0 Frame 0 TX-Pakete 8 Bytes 648 (648,0 B) TX-Fehler 0 verloren 0 Überläufe 0 Träger 0 Kollisionen 0 Die Ergebnisse des Ping-Tests innerhalb des Containers sind wie folgt: [root@33fcf82ab4dd /]# ping 172.17.0.7 PING 172.17.0.7 (172.17.0.7) 56(84) Bytes Daten. 64 Bytes von 172.17.0.7: icmp_seq=1 ttl=64 Zeit=0,205 ms 64 Bytes von 172.17.0.7: icmp_seq=2 ttl=64 Zeit=0,119 ms 64 Bytes von 172.17.0.7: icmp_seq=3 ttl=64 Zeit=0,118 ms 64 Bytes von 172.17.0.7: icmp_seq=4 ttl=64 Zeit=0,101 ms Diese Methode erfordert die Kenntnis der IP-Adresse jedes Containers, was in der Praxis nicht praktikabel ist. Methode 2: Link Fügen Sie beim Ausführen des Containerlinks Parameter hinzu Ausführen des ersten Containers docker run -it --name centos-1 docker.io/centos:latest Ausführen des zweiten Containers [root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest --link: Das erste centos-1 im Parameter ist der Containername und das zweite centos-1 ist der definierte Containeralias (verwenden Sie den Alias, um auf den Container zuzugreifen). Der Benutzerfreundlichkeit halber ist der Alias im Allgemeinen standardmäßig der Containername. Die Testergebnisse lauten wie folgt: [root@e0841aa13c5b /]# ping centos-1 PING centos-1 (172.17.0.7) 56(84) Bytes Daten. 64 Bytes von Centos-1 (172.17.0.7): icmp_seq=1 ttl=64 Zeit=0,210 ms 64 Bytes von Centos-1 (172.17.0.7): icmp_seq=2 ttl=64 Zeit=0,116 ms 64 Bytes von Centos-1 (172.17.0.7): icmp_seq=3 ttl=64 Zeit=0,112 ms 64 Bytes von Centos-1 (172.17.0.7): icmp_seq=4 ttl=64 Zeit=0,114 ms Diese Methode stellt Anforderungen an die Reihenfolge, in der Container erstellt werden. Wenn mehrere Container im Cluster aufeinander zugreifen müssen, ist die Verwendung nicht sehr praktisch. Methode 3: Erstellen Sie ein Brückennetzwerk 1. Führen Sie nach der Installation von Docker den folgenden Befehl aus, um ein Bridge-Netzwerk zu erstellen: docker network create testnet Das neu erstellte Bridge-Testnetz wird abgefragt. 2. Führen Sie den Container aus, um eine Verbindung mit dem Testnet-Netzwerk herzustellen. Verwendung: docker run -it --name <Containername> ---network <Bridge> --network-alias <Netzwerkalias> <Imagename> [root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest [root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest 3. Ping von einem Container zum anderen. Die Testergebnisse sind wie folgt: [root@fafe2622f2af /]# ping centos-1 PING centos-1 (172.20.0.2) 56(84) Bytes Daten. 64 Bytes von centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 Zeit=0,158 ms 64 Bytes von centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 Zeit=0,108 ms 64 Bytes von centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 Zeit=0,112 ms 64 Bytes von centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 Zeit=0,113 ms 4. Wenn Sie auf den Dienst im Container zugreifen möchten, können Sie diese Methode verwenden, um auf <Netzwerkalias> zuzugreifen: <Dienst-Portnummer> Es wird empfohlen, diese Methode zum Anpassen des Netzwerks zu verwenden. Da der Netzwerkalias verwendet wird, müssen Sie sich keine Gedanken darüber machen, ob sich die IP ändert. Sie können aufeinander zugreifen, solange Sie in Docker eine Verbindung zum Bright-Netzwerk herstellen. Es können mehrere Brücken eingerichtet werden, um sie in verschiedenen Netzwerksegmenten zu isolieren. Oben sind die Details der drei Methoden des gegenseitigen Zugriffs auf Docker-Container aufgeführt. Weitere Informationen zum gegenseitigen Zugriff auf Docker-Container finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: SQL-Zusammenführungsvorgang von Abfrageergebnissen von Tabellen mit unterschiedlichen Spalten
>>: Das Vue-Projekt realisiert Anmelde- und Registrierungseffekte
<br />Es ist nicht länger als zwei Jahre her...
1. Linklayout der neuen Site-Startseite 1. Die Pos...
Hier ist ein Fall des Ziehens einer modalen Box. ...
【Historischer Hintergrund】 Ich arbeite seit drei ...
Vor kurzem musste ich aus geschäftlichen Gründen ...
Was ist das? GNU Parallel ist ein Shell-Tool zum ...
GitHub bietet alle möglichen magischen Tools. Heu...
Erste: Code kopieren Der Code lautet wie folgt: &l...
Dieses Tutorial beschreibt Ihnen die detaillierte...
Die vollständige Syntax der Select-Anweisung laut...
CAST-Funktion Im vorherigen Artikel haben wir die...
Als ich heute CentOS6.2 installierte, kam ich nic...
Im DOM-Ereignismodell von JavaScript werden Ereig...
Hintergrund Letzte Woche hat das Unternehmen eine...
Dieser Blog ist eine Arbeitsnotiz Umfeld: Nginx-V...