我正在尝试使用Dockerfiles,我想我理解大部分逻辑.但是,我没有看到在这种情况下"暴露"和"发布"端口之间的区别.
我首先看到的所有教程都包含EXPOSEDockerfile中的命令:
...
EXPOSE 8080
...
Run Code Online (Sandbox Code Playgroud)
然后他们从这个Dockerfile构建一个图像:
$ docker build -t an_image - < Dockerfile
Run Code Online (Sandbox Code Playgroud)
然后在运行映像时发布与上面相同的端口:
$ docker run -d -p 8080 an_image
Run Code Online (Sandbox Code Playgroud)
或使用发布所有端口
$ docker run -d -P an_image
Run Code Online (Sandbox Code Playgroud)
暴露Dockerfile中的端口有什么意义,如果它仍然会被发布?是否需要首先公开一个端口,而不是稍后发布它?实际上,我想在创建映像时指定我将在Dockerfile中使用的所有端口,然后再不打扰它们,只需运行它们:
$ docker run -d an_image
Run Code Online (Sandbox Code Playgroud)
这可能吗?
docker ×1