Verwendung des docker container port Befehls zur Auflistung von Port-Zuordnungen

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den Befehl docker port verwenden, um die Port-Zuordnungen eines laufenden Docker-Containers zu überprüfen. Wir beginnen mit dem Start eines Nginx-Containers mit veröffentlichten Ports und untersuchen dann, wie alle veröffentlichten Port-Zuordnungen für den Container aufgelistet werden können.

Sie werden außerdem lernen, wie spezifische veröffentlichte TCP- und UDP-Port-Zuordnungen aufgelistet werden und das Verhalten bei der Abfrage einer nicht vorhandenen UDP-Zuordnung verstehen. Abschließend zeigen wir, wie eine bestimmte veröffentlichte Port-Zuordnung ohne explizite Angabe des Protokolls aufgelistet werden kann.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/port("List Container Ports") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/run -.-> lab-555116{{"Verwendung des docker container port Befehls zur Auflistung von Port-Zuordnungen"}} docker/ps -.-> lab-555116{{"Verwendung des docker container port Befehls zur Auflistung von Port-Zuordnungen"}} docker/port -.-> lab-555116{{"Verwendung des docker container port Befehls zur Auflistung von Port-Zuordnungen"}} docker/pull -.-> lab-555116{{"Verwendung des docker container port Befehls zur Auflistung von Port-Zuordnungen"}} docker/images -.-> lab-555116{{"Verwendung des docker container port Befehls zur Auflistung von Port-Zuordnungen"}} end

Container mit veröffentlichten Ports starten

In diesem Schritt lernen Sie, wie Sie einen Docker-Container starten und dessen Ports auf dem Host-System veröffentlichen. Durch das Veröffentlichen von Ports wird externer Zugriff auf Dienste ermöglicht, die innerhalb des Containers laufen.

Zuerst laden wir das nginx-Image von Docker Hub. Dieses Image enthält einen einfachen Webserver, den wir für die Demonstration verwenden können.

docker pull nginx

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird. Sobald der Download abgeschlossen ist, können Sie überprüfen, ob das Image lokal verfügbar ist, indem Sie folgenden Befehl ausführen:

docker images

Nun starten wir einen nginx-Container und veröffentlichen Port 80 innerhalb des Containers auf Port 8080 des Host-Systems. Das Flag -d startet den Container im Detached-Modus (im Hintergrund), das Flag -p bildet die Ports ab, und nginx ist der Name des Images.

docker run -d -p 8080:80 nginx

Die Ausgabe wird die Container-ID sein. Dies bedeutet, dass der Container erfolgreich gestartet wurde und sein interner Port 80 über Port 8080 auf Ihrer LabEx-VM erreichbar ist.

Um zu überprüfen, ob der Webserver läuft und erreichbar ist, können Sie curl verwenden, um auf den veröffentlichten Port auf dem Host-System zuzugreifen.

curl http://localhost:8080

Sie sollten die HTML-Ausgabe der standardmäßigen Nginx-Begrüßungsseite in Ihrem Terminal sehen. Dies bestätigt, dass die Port-Zuordnung korrekt funktioniert und Sie von dem Host auf den Dienst innerhalb des Containers zugreifen können.

Alle veröffentlichten Port-Zuordnungen für den Container auflisten

In diesem Schritt lernen Sie, wie Sie die veröffentlichten Port-Zuordnungen eines laufenden Docker-Containers anzeigen können. Dies ist nützlich, um zu bestätigen, welche Ports freigegeben sind und wie sie auf den Host gemappt wurden.

Mit dem Befehl docker port gefolgt von der Container-ID oder dem Namen können wir alle veröffentlichten Port-Zuordnungen für einen bestimmten Container auflisten. Zuerst holen wir uns die Container-ID des nginx-Containers, den wir im vorherigen Schritt gestartet haben.

docker ps -q --filter ancestor=nginx

Dieser Befehl gibt die Container-ID aus. Kopieren Sie diese ID, da wir sie im nächsten Befehl verwenden werden.

Nun verwenden wir den docker port-Befehl mit der Container-ID, um die Port-Zuordnungen aufzulisten. Ersetzen Sie <container_id> durch die tatsächliche ID, die Sie erhalten haben.

docker port <container_id>

Sie sollten eine Ausgabe ähnlich wie 80/tcp -> 0.0.0.0:8080 sehen. Dies zeigt an, dass der interne Port 80 des Containers (mit TCP-Protokoll) auf Port 8080 aller Host-Schnittstellen (0.0.0.0) gemappt ist.

Dieser Befehl bietet eine schnelle Möglichkeit, alle für einen laufenden Container konfigurierten Port-Zuordnungen einzusehen.

Spezifische TCP-Port-Zuordnung auflisten

In diesem Schritt verfeinern wir die Verwendung des docker port-Befehls, um eine bestimmte veröffentlichte Port-Zuordnung inklusive des Protokolls anzuzeigen. Dies ist besonders nützlich, wenn ein Container mehrere Ports mit unterschiedlichen Protokollen freigibt.

Um eine spezifische TCP-Port-Zuordnung aufzulisten, ergänzen wir den docker port-Befehl mit dem Container-Port und dem Protokoll (/tcp). Holen Sie sich zunächst erneut die Container-ID, falls Sie diese nicht zur Hand haben.

docker ps -q --filter ancestor=nginx

Verwenden Sie nun den docker port-Befehl mit der Container-ID und geben Sie den internen Port 80 mit dem TCP-Protokoll an. Ersetzen Sie <container_id> durch Ihre Container-ID.

docker port < container_id > 80/tcp

Die Ausgabe sollte 0.0.0.0:8080 lauten. Dies zeigt genau die Host-Adresse und den Port an, auf den der interne TCP-Port 80 des Containers gemappt ist. Diese Methode ist präziser als das Auflisten aller Ports, wenn Sie nur an einer bestimmten Zuordnung und einem bestimmten Protokoll interessiert sind.

Spezifische UDP-Port-Zuordnung auflisten (Fehler erwartet)

In diesem Schritt versuchen wir, eine spezifische veröffentlichte UDP-Port-Zuordnung für unseren nginx-Container aufzulisten. Da Nginx typischerweise nur TCP für seinen Webserver verwendet, erwarten wir, dass dieser Befehl keine UDP-Zuordnung findet und möglicherweise einen Fehler oder keine Ausgabe liefert. Dies demonstriert, wie das Protokoll bei der Abfrage von Port-Zuordnungen angegeben wird und was passiert, wenn eine Zuordnung für dieses Protokoll nicht existiert.

Zuerst holen Sie sich die Container-ID Ihres nginx-Containers.

docker ps -q --filter ancestor=nginx

Verwenden Sie nun den docker port-Befehl mit der Container-ID und geben Sie den internen Port 80 mit dem UDP-Protokoll (/udp) an. Ersetzen Sie <container_id> durch Ihre Container-ID.

docker port < container_id > 80/udp

Sie werden feststellen, dass dieser Befehl keine Ausgabe oder eine Fehlermeldung erzeugt. Dies liegt daran, dass der nginx-Container in der Standardkonfiguration Port 80 nicht über das UDP-Protokoll freigibt. Dies unterstreicht die Bedeutung der korrekten Protokollangabe bei der Abfrage von Port-Zuordnungen.

Spezifische Port-Zuordnung ohne Protokollangabe auflisten

In diesem Schritt lernen wir, wie man eine spezifische veröffentlichte Port-Zuordnung auflistet, ohne explizit das Protokoll (TCP oder UDP) anzugeben. Wenn das Protokoll weggelassen wird, zeigt der docker port-Befehl die Zuordnungen für beide Protokolle (TCP und UDP) für den angegebenen Container-Port an.

Zuerst holen Sie sich die Container-ID Ihres nginx-Containers.

docker ps -q --filter ancestor=nginx

Verwenden Sie nun den docker port-Befehl mit der Container-ID und geben Sie den internen Port 80 ohne Protokollangabe an. Ersetzen Sie <container_id> durch Ihre Container-ID.

docker port < container_id > 80

Da unser nginx-Container nur eine TCP-Zuordnung für Port 80 hat, wird die Ausgabe 80/tcp -> 0.0.0.0:8080 sein. Falls der Container sowohl TCP- als auch UDP-Zuordnungen für Port 80 hätte, würden beide aufgelistet werden. Dies ist eine praktische Methode, um alle Zuordnungen für einen bestimmten internen Port unabhängig vom Protokoll anzuzeigen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man einen Docker-Container startet und seine internen Ports auf dem Host-System mit dem Befehl docker run -p veröffentlicht. Wir haben dies demonstriert, indem wir einen Nginx-Container gestartet und seinen internen Port 80 auf den Host-Port 8080 gemappt haben, wobei wir die Erreichbarkeit mit curl überprüft haben.

Anschließend haben wir den Befehl docker port untersucht, um die veröffentlichten Port-Zuordnungen eines laufenden Containers aufzulisten. Wir haben gelernt, wie man alle veröffentlichten Ports auflistet und wie man spezifische TCP- oder UDP-Port-Zuordnungen abfragt, wobei wir verstanden haben, dass die Abfrage einer nicht existierenden UDP-Zuordnung zu einem Fehler führt. Zudem haben wir geübt, wie man eine spezifische Port-Zuordnung auflistet, ohne explizit das Protokoll anzugeben.