Der Docker-Container stellt Dienste bereit und lauscht auf Port 8888. Um ihn von außen zugänglich zu machen, ist eine Portzuordnung erforderlich. docker run -it --rm -p 8888:8888 server:v1 An dieser Stelle tritt ein Problem auf. Nach dem Deployment auf der virtuellen Maschine A ist der Portdienst 8888 in A erreichbar, in B jedoch nicht. Dies dürfte daran liegen, dass die Anfrage abgefangen wurde. 1. Überprüfen Sie firewall-cmd --stateWenn die Ausgabe "nicht läuft" lautet, dann läuft FirewallD nicht und alle Schutzrichtlinien sind nicht gestartet. In diesem Fall kann ausgeschlossen werden, dass die Firewall die Verbindung blockiert. Wenn die Ausgabe „running“ lautet, bedeutet dies, dass FirewallD derzeit ausgeführt wird. Um anzuzeigen, welche Ports und Dienste derzeit geöffnet sind, müssen Sie den folgenden Befehl eingeben: Firewall-Befehl --list-ports Firewall-Befehl --list-services Es gibt zwei Lösungen: 1. Schalten Sie den FirewallD-Dienst aus: Wenn Sie keine Firewall benötigen, schalten Sie einfach den Dienst FirewallD aus. systemctl stoppe firewalld.service 2. Fügen Sie eine Richtlinie hinzu, um den angegebenen Port für die Außenwelt zu öffnen: Wenn wir beispielsweise den externen Port 5000/tcp öffnen möchten, können wir den folgenden Befehl verwenden: Firewall-Befehl --add-port=5000/tcp --permanent Firewall-Befehl --reload Wenn Sie den Port nur temporär öffnen möchten, entfernen Sie den Parameter „--permanent“ in der ersten Zeile des Befehls. Wenn Sie den FirewallD-Dienst dann erneut starten, wird diese Richtlinie ungültig. 2. Die IP-Weiterleitung ist nicht aktiviertsysctl net.ipv4.ip_forward Wenn net.ipv4.ip_forward=0 angezeigt wird, ist es nicht aktiviert. 3. Der Dienst iptables ist eingeschaltet und blockiertSie können den Dienst iptables deaktivieren Dienst iptables stoppen Wenn beim Ausführen von Docker ein Fehler auftritt:
Starten Sie dann einfach den Docker-Dienst neu Dienst Docker Neustart oder: #Legen Sie die iptables-Firewall als Startelement fest systemctl enable iptables.service #Starten Sie die Firewall, damit die Konfigurationsdatei wirksam wird systemctl start iptables.service #Firewall stoppen systemctl stop iptables.service #Starten Sie die Firewall neu, damit die Konfigurationsdatei wirksam wird. systemctl restart iptables.service Endgültige Version: Nachdem Docker gestartet und Ports zugeordnet wurden, fügt Docker DNAT-Regeln in iptables hinzu, um die vom entsprechenden Port empfangenen Pakete in IP zu konvertieren und weiterzuleiten. Gleichzeitig werden Regeln hinzugefügt, um alle IPs aus der Docker-Domäne zu konvertieren. Unter Centos7 kann Docker jedoch normal auf das externe Netzwerk zugreifen, aber die vom externen Netzwerk gesendete Anforderung kann nach dem Empfang und der Weiterleitung durch eth1 nicht an Docker0 übermittelt werden, oder sie wird übermittelt, aber die Situation (oui Unknown) tritt auf. Es ist unklar, warum die Daten nach DNAT nicht an Docker0 übermittelt werden können. Die endgültige Lösung besteht darin, iptables nach dem Start von Docker neu zu starten Dienst iptables neu starten Löschen Sie alle vom Docker hinzugefügten Regeln und fügen Sie dann Regeln hinzu iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE Ersetzen Sie die IP-Adresse aller Pakete 172.17.0.0/16 von Docker durch die lokale IP-Adresse und senden Sie sie, um den Zweck zu erreichen, dass Docker auf das externe Netzwerk zugreift. Dies ist das Ende dieses Artikels über Docker-Port-Mapping und externe Unzugänglichkeit. Weitere Informationen zu Docker-Port-Mapping und externem Zugriff finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Wie löst Vue das domänenübergreifende Problem des Axios-Request-Frontends?
>>: Webdesign-Tipps für Formular-Eingabefelder
Da der Einfluss des Unternehmens wächst und seine...
Bereiten Sie eine CentOS6-Installationsdiskette (...
1. CSS-Boxmodell Die Box beinhaltet: Rand, Rahmen...
1. Änderungen in der Standard-Speicher-Engine von...
In diesem Artikel finden Sie das grafische Tutori...
Inhaltsverzeichnis Vorwort Fall: Nachahmung des L...
Die automatisierte Projektbereitstellung wird häu...
Dieser Artikel enthält einfachen HTML- und Musikp...
Inhaltsverzeichnis 1 Begriffliche Abgrenzung 2 Fa...
Die ersten Computer konnten nur ASCII-Zeichen ver...
1. Szenariobeschreibung: Unsere Umgebung verwende...
Einstellungen für die Transaktionsisolationsebene...
Vorwort Der Grund, warum die InnoDB-Engine von My...
1. Suchen Sie im Browser nach MySQL, um es herunt...
<br />Original: http://uicom.net/blog/?p=762...