Я экспериментирую с Dockerfiles, и я думаю, что я понимаю большую часть логики. Тем не менее, я не вижу разницы между "разоблачением" и "публикацией" порта в этом контексте.
Все обучающие программы, которые я видел сначала, включают команду EXPOSE
в файле Docker:
...
EXPOSE 8080
...
Затем они создают изображение из этого файла Docker:
$ docker build -t an_image - < Dockerfile
Затем опубликуйте тот же порт, что и при работе с изображением:
$ docker run -d -p 8080 an_image
или опубликовать все порты, используя
$ docker run -d -P an_image
Какой смысл выставлять порт в файле Docker, если он будет опубликован в любом случае? Может ли когда-нибудь возникнуть необходимость открыть порт первым, а не опубликовать его позже? Фактически, я хотел бы указать все порты, которые я буду использовать в Dockerfile при создании изображения, а затем не беспокоиться о них снова, запуская их просто с помощью
$ docker run -d an_image
Возможно ли это?