Docker ist eine sehr beliebte Open-Source-Containerisierungs-Engine, die häufig in Entwicklungs- und Produktionsumgebungen verwendet wird, da sie schnell erstellt und einfach verwaltet werden kann und die Portabilität von Anwendungen gewährleistet. Wenn Sie Docker zum Erstellen einer Webanwendung verwenden, kommt es jedoch nicht selten vor, dass Ports nicht kommunizieren können. Heute werden wir die Gründe und Lösungen für den von Docker erstellten blockierten Webport analysieren.
1. Ursachenanalyse
Der iptables-Firewall-Dienst ist im Linux-System standardmäßig aktiviert. Wenn Sie ihn nicht konfiguriert haben, verhindert die Firewall möglicherweise die Kommunikation Ihres Docker-Containers mit dem externen Netzwerk. Daher können Sie die Firewall deaktivieren oder Regeln hinzufügen, damit Docker reibungslos mit dem externen Netzwerk kommunizieren kann. Das Folgende ist ein Referenzbefehl:
Schließen Sie die Firewall: $ sudo service iptables stop
Öffnen Sie den Port: $ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Nachdem Docker den Container gestartet hat, wird der Port im Container über die Portzuordnung einem Port auf dem Host zugeordnet, um die Kommunikation zwischen dem Container und dem externen Netzwerk zu erreichen. Standardmäßig ist das Netzwerk des Containers unabhängig und kommuniziert nur intern. Wenn Sie die Ports im Container nicht zuordnen, kann es daher sein, dass der Port nicht kommunizieren kann. Das Folgende ist die Standard-Portzuordnungsmethode:
$ docker run -p 80:80 Bildname
Es gibt drei Netzwerktreiber in Docker, nämlich Bridge, Host und keiner. Bei der Verwendung von Docker-Containern wird standardmäßig der Bridge-Netzwerktreiber verwendet, der ein virtuelles Netzwerk basierend auf dem NAT-Netzwerk bildet. Wenn Ihr Container nicht auf das externe Netzwerk zugreifen kann, müssen Sie möglicherweise überprüfen, ob Ihr Netzwerktreiber richtig ausgewählt ist. Sie können den folgenden Befehl verwenden, um den Netzwerktreiber anzuzeigen:
$ docker network ls
Nachdem Docker den Container gestartet hat, weist er basierend auf dem Netzwerktreiber eine eindeutige IP-Adresse zu. Wenn Ihre Container-IP-Adresse nicht auf das externe Netzwerk zugreifen kann, müssen Sie prüfen, ob die daran angeschlossene Netzwerkkarte richtig konfiguriert ist. Im folgenden Beispiel sehen wir, dass die IP-Adresse des Containers 172.17.0.2 lautet:
$ docker inspect container-name | Sie können die folgende Methode verwenden, um die Portzuordnungsbeziehung zu überprüfen:
$ Docker-Port-Containername
Der obige Befehl kann die Portzuordnung überprüfen innerhalb des Containers zum Host-Port.
Bestätigen Sie, ob der Netzwerktreiber richtig ausgewählt istSie können die folgende Methode verwenden, um den vom Container verwendeten Netzwerktyp zu überprüfen:
$ docker inspect container-name |. Wenn die Ausgabe Bridge ist, ist dies der Fall bedeutet, dass der Netzwerktreiber richtig ausgewählt wurde. Wenn die Ausgabe Host oder None ist, können Sie sie wie folgt ändern:
Okay. Fügen Sie beim Ausführen des Docker-Befehls einen --privileged-Parameter hinzu, damit der Docker-Container relativ hohe Berechtigungen hat:
$ docker run --privileged image-name
Bestätigen Sie, ob die Container-IP-Adresse korrekt ist$ docker inspect container-name |.
Wenn sich Ihre Container-IP-Adresse ändert, können Sie den folgenden Befehl verwenden, um eine eindeutige IP-Adresse neu zuzuweisen:
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn der von Docker erstellte Webport blockiert ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!