Freigeben von Ports in Dockerfiles
Beim Erstellen von Docker-Images können Sie die Ports angeben, die innerhalb des Containers freigegeben werden sollen, indem Sie die EXPOSE
-Anweisung im Dockerfile verwenden.
Syntax für das Freigeben von Ports
Die EXPOSE
-Anweisung in einem Dockerfile folgt dieser Syntax:
EXPOSE < port > [ < port > / < protocol > ...]
Hier repräsentiert <port>
die Portnummer, und das optionale <protocol>
gibt das Protokoll an, das entweder tcp
(Standard) oder udp
sein kann.
Beispielsweise würden Sie die folgende EXPOSE
-Anweisung verwenden, um Port 80 (HTTP) und Port 22 (SSH) in Ihrem Container freizugeben:
EXPOSE 80 22
Mapping der freigegebenen Ports zur Laufzeit
Wenn Sie einen Container basierend auf dem Image ausführen, können Sie die freigegebenen Ports auf die Ports der Hostmaschine mappen, indem Sie die -p
- oder --publish
-Option mit dem docker run
-Befehl verwenden.
docker run -p <host-port>:<container-port> <image-name>
Beispielsweise würden Sie den folgenden Befehl verwenden, um den Port 80 des Containers auf Port 8080 der Hostmaschine zu mappen:
docker run -p 8080:80 my-app
Dadurch können externe Clients auf den Dienst zugreifen, der auf Port 80 innerhalb des Containers läuft, indem sie sich mit Port 8080 auf der Hostmaschine verbinden.
Freigeben mehrerer Ports
Sie können mehrere Ports in einem Dockerfile freigeben, indem Sie mehrere EXPOSE
-Anweisungen verwenden. Dies ist nützlich, wenn Ihr Container mehrere Dienste oder Anwendungen ausführt, auf die von der Hostmaschine aus zugegriffen werden muss.
EXPOSE 80
EXPOSE 22
EXPOSE 3306
Beim Ausführen des Containers können Sie jeden dieser freigegebenen Ports auf die Ports der Hostmaschine mappen, indem Sie die -p
- oder --publish
-Option verwenden.
docker run -p 8080:80 -p 2222:22 -p 3306:3306 my-app
Indem Sie diesen Ansatz verfolgen, können Sie sicherstellen, dass alle erforderlichen Ports freigegeben und von der Hostmaschine aus zugänglich sind.