Ports zwischen Docker-Container und Host mappen

DockerDockerBeginner
Jetzt üben

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

Einführung

Docker ist eine leistungsstarke Containerisierungsplattform, die es Entwicklern ermöglicht, Anwendungen in einer konsistenten und reproduzierbaren Weise zu verpacken und bereitzustellen. Ein entscheidender Aspekt der Docker-Arbeit ist die Möglichkeit, Ports zwischen dem Container und dem Hostsystem zu mappen, um die Kommunikation und den Zugriff auf Ihre containerisierten Anwendungen zu ermöglichen. Dieses Tutorial führt Sie durch den Prozess der Portweiterleitung in Docker und behandelt die Grundlagen und praktischen Anwendungen.

Einführung in die Docker-Portweiterleitung

Docker ist eine beliebte Containerisierungsplattform, die es Entwicklern ermöglicht, Anwendungen in einer konsistenten und isolierten Umgebung zu verpacken und bereitzustellen. Eine der wichtigsten Funktionen von Docker ist die Möglichkeit, Ports zwischen einem Container und dem Hostsystem zu mappen, wodurch die Kommunikation zwischen der containerisierten Anwendung und der Außenwelt ermöglicht wird.

Was ist Portweiterleitung?

Portweiterleitung, auch Portmapping genannt, ist der Prozess der Umleitung des Datenverkehrs von einem Port auf dem Hostsystem zu einem bestimmten Port innerhalb des Docker-Containers. Dadurch kann der Container seine Dienste auf einem bestimmten Port bereitstellen, während das Hostsystem auf diese Dienste über einen anderen Port zugreifen kann.

Warum ist Portweiterleitung wichtig?

Portweiterleitung ist aus mehreren Gründen unerlässlich:

  1. Zugänglichkeit: Ohne Portweiterleitung wäre die containerisierte Anwendung von außerhalb des Containers nicht zugänglich, was ihre Nutzbarkeit und Integration in andere Systeme einschränkt.
  2. Flexibilität: Portweiterleitung ermöglicht es Ihnen, mehrere Container auf demselben Hostsystem auszuführen, wobei jeder seine Dienste auf verschiedenen Ports bereitstellt.
  3. Sicherheit: Durch die Zuweisung bestimmter Ports können Sie den Zugriff auf Ihre containerisierten Anwendungen steuern und einschränken, wodurch die Sicherheit Ihres Systems insgesamt verbessert wird.

Verständnis der Docker-Portweiterleitungs-Syntax

Die Syntax für die Zuweisung von Ports zwischen einem Docker-Container und dem Hostsystem lautet wie folgt:

-p <Hostport>:<Containerport>

Dabei ist <Hostport> der Port auf dem Hostsystem, der zum Zugriff auf die containerisierte Anwendung verwendet wird, und <Containerport> der Port innerhalb des Containers, auf dem die Anwendung lauscht.

Um beispielsweise Port 80 auf dem Hostsystem mit Port 8080 innerhalb des Containers zu verknüpfen, würden Sie den folgenden Befehl verwenden:

docker run -p 80:8080 my-app

Dadurch können Sie auf die containerisierte Anwendung zugreifen, indem Sie http://localhost:80 auf dem Hostsystem besuchen.

Ports zwischen Container und Host mappen

Verständnis des Port-Mapping-Prozesses

Der Prozess des Mappens von Ports zwischen einem Docker-Container und dem Hostsystem umfasst folgende Schritte:

  1. Ermittlung des/der Ports, auf denen Ihre containerisierte Anwendung lauscht: Dies ist in der Regel in der Dokumentation der Anwendung oder der Dockerfile spezifiziert.
  2. Bestimmung des/der Ports auf dem Hostsystem, die Sie zum Zugriff auf die Anwendung verwenden möchten: Dies können beliebige verfügbare Ports auf dem Hostsystem sein.
  3. Verwendung des Flags -p oder --publish beim Ausführen des Docker-Containers: Dadurch können Sie den Hostport dem Containerport zuordnen.

Ports beim Erstellen des Containers mappen

Um Ports während des Containererstellungsprozesses zu mappen, können Sie das Flag -p oder --publish mit dem Befehl docker run verwenden. Die Syntax lautet wie folgt:

docker run -p <host_port>:<container_port> <image_name>

Um beispielsweise Port 80 auf dem Hostsystem mit Port 8080 im Container zu verknüpfen, würden Sie den folgenden Befehl verwenden:

docker run -p 80:8080 my-app

Ports für laufende Container mappen

Sie können Ports auch für bereits laufende Container mit dem Befehl docker port mappen. Die Syntax lautet wie folgt:

docker port <Containername_oder_ID> <Containerport>

Dies zeigt den Hostport an, der dem angegebenen Containerport zugeordnet ist.

Mehrere Ports freigeben

Sie können mehrere Ports zwischen dem Container und dem Hostsystem mappen, indem Sie das Flag -p mehrmals verwenden. Beispiel:

docker run -p 80:8080 -p 443:8443 my-app

Dies ordnet Port 80 auf dem Host Port 8080 im Container und Port 443 auf dem Host Port 8443 im Container zu.

Praktische Anwendungen von Port Mapping

Webserver in Containern ausführen

Eine der häufigsten Anwendungsfälle für Port Mapping ist die Ausführung von Webservern in Docker-Containern. Durch das Mappen des Webserver-Ports des Containers auf einen Port auf dem Hostsystem können Sie die Webanwendung einfach über einen Webbrowser aufrufen.

Um beispielsweise einen Nginx-Webserver in einem Docker-Container auszuführen und Port 80 des Hosts mit Port 80 im Container zu verknüpfen, können Sie den folgenden Befehl verwenden:

docker run -p 80:80 nginx

Datenbankports freigeben

Ein weiterer häufiger Anwendungsfall für Port Mapping ist die Freigabe von Datenbankports von einem Container zum Hostsystem. Dies ermöglicht es externen Anwendungen, eine im Container laufende Datenbank zu verbinden.

Um beispielsweise eine MySQL-Datenbank in einem Docker-Container auszuführen und Port 3306 des Hosts mit Port 3306 im Container zu verknüpfen, können Sie den folgenden Befehl verwenden:

docker run -p 3306:3306 mysql

Zugriff auf containerisierte Dienste aus der Ferne

Port Mapping ermöglicht es Ihnen auch, auf containerisierte Dienste von entfernten Standorten zuzugreifen. Durch das Mappen eines Ports auf dem Hostsystem auf einen Port im Container können Sie sich von jedem Computer aus mit dem containerisierten Dienst verbinden, der auf das Hostsystem zugreifen kann.

Dies ist besonders nützlich für Dienste, die von mehreren Benutzern oder von verschiedenen Standorten aus aufgerufen werden müssen, wie z. B. Webanwendungen, APIs oder Monitoring-Tools.

Skalierung containerisierter Anwendungen

Bei der Ausführung mehrerer Instanzen einer containerisierten Anwendung wird Port Mapping für Lastverteilung und Skalierung entscheidend. Durch das Mappen verschiedener Hostports auf denselben Containerport können Sie den eingehenden Datenverkehr auf mehrere Containerinstanzen verteilen.

Dies ermöglicht es Ihnen, Ihre Anwendung einfach nach Bedarf zu skalieren, ohne sich um Portkonflikte oder Zugänglichkeitsfragen kümmern zu müssen.

Zusammenfassung

In diesem Tutorial haben Sie die Bedeutung von Port Mapping in Docker und die effektive Zuordnung von Ports zwischen einem Docker-Container und dem Hostsystem kennengelernt. Durch das Verständnis der Konzepte und praktischen Anwendungen von Port Mapping können Sie eine nahtlose Kommunikation und den Zugriff auf Ihre containerisierten Anwendungen gewährleisten und Ihren Docker-Workflow effizienter und vielseitiger gestalten.