Ports in Docker-Containern freigeben
Wenn Anwendungen in Docker-Containern ausgeführt werden, ist es oft notwendig, Ports für das Hostsystem freizugeben, damit externe Clients auf die laufende Anwendung zugreifen können. Standardmäßig sind Docker-Container vom Hostnetzwerk isoliert, und ihre internen Ports sind von außerhalb des Containers nicht zugänglich.
Ports beim Container-Erstellen freigeben
Um einen Port aus einem Docker-Container freizugeben, können Sie den Flag -p
oder --publish
beim Erstellen eines neuen Containers verwenden. Die Syntax für diesen Befehl lautet:
docker run -p <Hostport>:<Containerport> <ImageName>
Um beispielsweise Port 8080 aus dem Container auf Port 8080 des Hostsystems freizugeben, würden Sie Folgendes ausführen:
docker run -p 8080:8080 my-java-ee-app
Mehrere Ports freigeben
Sie können mehrere Ports freigeben, indem Sie das Flag -p
mehrmals angeben:
docker run -p 8080:8080 -p 3306:3306 my-java-ee-app
Dies gibt Port 8080 des Containers auf Port 8080 des Hosts und Port 3306 des Containers auf Port 3306 des Hosts frei.
Bindung an eine bestimmte Host-Schnittstelle
Standardmäßig bindet Docker die freigegebenen Ports an alle verfügbaren Netzwerkschnittstellen des Hostsystems. Wenn Sie die Ports an eine bestimmte Schnittstelle binden möchten, können Sie die folgende Syntax verwenden:
docker run -p <Host-IP>:<Hostport>:<Containerport> <ImageName>
Um beispielsweise Port 8080 auf der Schnittstelle 192.168.1.100 des Hosts an Port 8080 im Container zu binden, würden Sie Folgendes ausführen:
docker run -p 192.168.1.100:8080:8080 my-java-ee-app
Durch das Verständnis der Portfreigabe in Docker-Containern stellen Sie sicher, dass Ihre in Containern laufenden Java EE-Anwendungen für externe Clients zugänglich sind.