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.