Ich experimentiere mit Dockerfiles, und ich glaube, dass ich die meisten der Logik verstehe. Allerdings sehe ich den Unterschied zwischen "exposing" und "publishing" eines Ports in diesem Kontext nicht.
All die Tutorials, die ich gesehen habe, beinhalten zuerst den EXPOSE
Befehl im Dockerfile:
...
EXPOSE 8080
...
Dann bauen sie ein Image aus diesem Dockerfile:
$ docker build -t an_image - < Dockerfile
Und dann publishen sie denselben Port wie oben beim Ausführen des Images:
$ docker run -d -p 8080 an_image
oder sie veröffentlichen alle Ports mit
$ docker run -d -P an_image
Was ist der Sinn darin, einen Port im Dockerfile freizugeben, wenn er sowieso veröffentlicht wird? Gäbe es jemals ein Bedürfnis, zuerst einen Port freizugeben und ihn später nicht zu veröffentlichen? Effektiv möchte ich alle Ports, die ich im Dockerfile beim Erstellen des Images verwenden werde, angeben und mich dann einfach damit befassen, sie erneut auszuführen:
$ docker run -d an_image
Ist das möglich?