So mappen Sie einen benutzerdefinierten Port eines Docker-Containers auf den Host

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 beliebte Containerisierungsplattform, die es Ihnen ermöglicht, Anwendungen in einer konsistenten und isolierten Umgebung zu verpacken und bereitzustellen. Eine der wichtigsten Funktionen von Docker ist die Möglichkeit, Ports von einem Container auf den Host-Computer abzubilden. Dadurch können Sie auf Ihre containerisierten Anwendungen von außen zugreifen. In diesem Tutorial werden wir untersuchen, wie Sie einen benutzerdefinierten Port eines Docker-Containers auf den Host abbilden, um Ihnen das Wissen zu vermitteln, wie Sie Ihre Docker-basierten Anwendungen effektiv verwalten und darauf zugreifen können.

Einführung in die Docker-Portweiterleitung

Docker ist eine beliebte Containerisierungsplattform, die es Entwicklern ermöglicht, ihre Anwendungen und Abhängigkeiten in isolierte Umgebungen, sogenannte Container, zu verpacken. Eine der wichtigsten Funktionen von Docker ist die Möglichkeit, Ports vom Host-Computer auf den Container abzubilden, um die Kommunikation zwischen dem Container und der Außenwelt zu ermöglichen.

Wenn Sie einen Docker-Container starten, läuft dieser typischerweise in seinem eigenen internen Netzwerk und hört auf einem bestimmten Port. Um auf die im Container laufende Anwendung zuzugreifen, müssen Sie den Port des Containers auf einen Port auf dem Host-Computer abbilden.

Die Portweiterleitung ist für verschiedene Anwendungsfälle unerlässlich, wie z. B.:

  1. Webanwendungen: Wenn Sie einen Webserver in einem Docker-Container ausführen, müssen Sie den Port des Containers (z. B. 80 oder 8080) auf einen Port auf dem Host-Computer abbilden, damit Benutzer über einen Webbrowser auf die Anwendung zugreifen können.

  2. Datenbanken: Wenn Sie einen Datenbankserver in einem Docker-Container ausführen, müssen Sie den Port des Containers (z. B. 3306 für MySQL) auf einen Port auf dem Host-Computer abbilden, damit andere Anwendungen eine Verbindung zur Datenbank herstellen können.

  3. Microservices: In einer Microservices-Architektur läuft jeder Dienst möglicherweise in einem eigenen Docker-Container. Die Portweiterleitung ist notwendig, um die Kommunikation zwischen verschiedenen Diensten und der Außenwelt zu ermöglichen.

Durch das Verständnis des Konzepts der Docker-Portweiterleitung können Sie die Netzwerkverbindung Ihrer containerisierten Anwendungen effektiv verwalten und sicherstellen, dass diese vom Host-Computer oder anderen Netzwerkclients erreichbar sind.

Zuweisen eines benutzerdefinierten Ports an einen Docker-Container

Um einen benutzerdefinierten Port vom Host-Computer auf einen Docker-Container zuzuweisen, können Sie den Flag -p oder --publish beim Ausführen des Befehls docker run verwenden.

Die grundlegende Syntax lautet:

docker run -p <Hostport>:<Containerport> <ImageName>

Hier ist ein Beispiel:

docker run -p 8080:80 nginx

In diesem Beispiel wird der Port 8080 auf dem Host-Computer dem Port 80 im Nginx-Container zugewiesen. Das bedeutet, dass Sie, wenn Sie auf http://localhost:8080 auf dem Host-Computer zugreifen, den im Container laufenden Nginx-Webserver erreichen können.

Sie können auch mehrere Ports zuweisen, indem Sie das Flag -p mehrmals angeben:

docker run -p 8080:80 -p 3306:3306 mysql

Dies weist den Port 8080 des Hosts dem Port 80 des Containers zu und den Port 3306 des Hosts dem Port 3306 des Containers.

Wenn Sie einen zufälligen verfügbaren Port auf dem Host-Computer dem Container zuweisen möchten, können Sie die folgende Syntax verwenden:

docker run -p <Containerport> <ImageName>

Beispiel:

docker run -p 80 nginx

In diesem Fall weist Docker automatisch einen verfügbaren Port auf dem Host-Computer zu und ordnet ihn dem Port 80 des Containers zu.

Sie können die Portzuweisung überprüfen, indem Sie den Befehl docker ps ausführen. Dieser zeigt die zugewiesenen Ports an:

CONTAINER ID   IMAGE   COMMAND                  PORTS                 NAMES
abc123def456   nginx   "/docker-entrypoint.…"   0.0.0.0:8080->80/tcp   romantic_babbage

Durch das Verständnis der Zuweisung benutzerdefinierter Ports an Docker-Container können Sie Ihre containerisierten Anwendungen effektiv der Außenwelt zugänglich machen und die Kommunikation zwischen dem Container und dem Host-Computer oder anderen Netzwerkclients ermöglichen.

Praktische Anwendungsfälle und Beispiele

Ausführen eines Webservers

Angenommen, Sie haben eine Webanwendung in einem Docker-Container, die auf dem Port 80 innerhalb des Containers lauscht. Um die Anwendung vom Host-Computer aus zugänglich zu machen, können Sie den Containerport 80 auf einen benutzerdefinierten Port auf dem Host, z. B. 8080, abbilden:

docker run -p 8080:80 my-web-app

Jetzt können Sie auf die Webanwendung zugreifen, indem Sie http://localhost:8080 auf dem Host-Computer besuchen.

Freigeben eines Datenbankservers

Wenn Sie einen Datenbankserver (z. B. MySQL) in einem Docker-Container ausführen, können Sie den Datenbankport des Containers (z. B. 3306) auf einen benutzerdefinierten Port auf dem Host abbilden:

docker run -p 3306:3306 mysql

Dies ermöglicht es anderen Anwendungen auf dem Host-Computer, eine Verbindung zum MySQL-Datenbankserver innerhalb des Containers über den Hostport 3306 herzustellen.

Zuweisen mehrerer Ports

In einem komplexeren Szenario haben Sie möglicherweise eine mehrschichtige Anwendung, bei der verschiedene Komponenten (z. B. Webserver, Anwendungsserver, Datenbank) in separaten Docker-Containern ausgeführt werden. Sie können mehrere Ports abbilden, um diese Komponenten freizugeben:

docker run -p 8080:80 -p 8000:8000 -p 3306:3306 my-app

Dies weist den Hostport 8080 dem Containerport 80 (Webserver) zu, den Hostport 8000 dem Containerport 8000 (Anwendungsserver) und den Hostport 3306 dem Containerport 3306 (Datenbankserver) zu.

Verwendung der zufälligen Portzuweisung

Wenn Sie keinen bestimmten Port auf dem Host-Computer angeben möchten, können Sie Docker die automatische Zuweisung eines verfügbaren Ports überlassen:

docker run -p 80 my-web-app

In diesem Fall weist Docker den Containerport 80 einem verfügbaren Port auf dem Host-Computer zu. Sie können den Befehl docker ps verwenden, um den zugewiesenen Port anzuzeigen.

Durch das Verständnis dieser praktischen Anwendungsfälle und Beispiele können Sie die Portweiterleitungsfunktionen von Docker effektiv nutzen, um Ihre containerisierten Anwendungen und Dienste der Außenwelt zugänglich zu machen und eine nahtlose Kommunikation und den Zugriff auf Ihre Anwendungen zu ermöglichen.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie einen benutzerdefinierten Port eines Docker-Containers auf den Host-Computer abbilden. Durch das Verständnis des Port-Mapping-Prozesses können Sie nun auf Ihre containerisierten Anwendungen vom Host aus zugreifen und so effektiver mit Ihren Docker-basierten Diensten interagieren und sie verwalten. Die in diesem Leitfaden bereitgestellten praktischen Anwendungsfälle und Beispiele helfen Ihnen, diese Konzepte auf Ihre eigenen Docker-basierten Projekte und Bereitstellungen anzuwenden.