当前位置: 首页 > 知识库问答 >
问题:

Docker中的“暴露”和“发布”有什么区别?

贾飞鸿
2023-03-14
...
EXPOSE 8080
...
$ docker build -t an_image - < Dockerfile

然后在运行映像时发布与上面相同的端口:

$ docker run -d -p 8080 an_image

或发布所有端口,使用

$ docker run -d -P an_image

在Dockerfile中公开一个端口有什么意义?是否需要先公开一个端口,然后不发布它?实际上,我希望指定在创建映像时将在Dockerfile中使用的所有端口,然后不再麻烦它们,只需使用以下命令运行它们:

$ docker run -d an_image

这可能吗?

共有1个答案

储俊英
2023-03-14

基本上,您有三种选择:

  1. 既不指定expose也不指定-p
  2. 仅指定公开
  3. 指定expose-p

1)如果既不指定expose也不指定-p,则只能从容器本身内部访问容器中的服务。

两者分开的原因是IMHO,因为:

  • 选择主机端口取决于主机,因此不属于Dockerfile(否则将取决于主机),
  • 而且通常只要容器中的服务可以从其他容器访问就足够了。

文档明确指出:

 类似资料:
  • 问题内容: 我正在试验Dockerfile,我想我了解大多数逻辑。但是,在这种情况下,我看不到“公开”和“发布”端口之间的区别。 我首先看过的所有教程都将命令包含在Dockerfile中: 然后,他们从此Dockerfile构建映像: 然后在运行映像时 发布 与上述相同的端口: 或使用以下命令发布所有端口 如果仍要发布端口,则在Dockerfile中公开端口有什么意义?是否需要先公开一个端口,然后

  • 问题内容: 场景: 假设通过反向工程文件,攻击者获得了应用程序中使用的Push Push Service服务。攻击者开发了一个相似的假冒应用程序,该程序包名称相同/不同,并且已上传到与Google Play不同的应用商店中。 我的问题: 他/她可以在应用中使用相同的SENDER ID吗?对于安装该伪造应用程序的用户而言,这意味着什么? 相关问题: 谷歌云消息传递安全性)问题似乎有点相似。另外,An

  • 问题内容: 并且似乎正在与同一个dockerFile进行交互,这两个工具之间有什么区别? 问题答案: 在一个码头工人的发动机管理单个容器时,CLI使用。这是访问docker daemon api的客户端命令行。 该CLI可以用于管理多容器应用程序。它还会将您在cli 上输入的许多选项移到文件中,以方便重用。它在与所使用的同一docker api上充当前端“脚本” ,因此您可以使用命令和许多shel

  • Windows上的Docker似乎是Windows Server2016内置的功能?并支持在Docker容器内运行Windows以及使用Windows作为Docker容器宿主。这支持Linux吗?我不这么认为,我认为它只支持运行Windows Docker容器。这似乎也是微软维护的。 Docker for Windows似乎是Docker团队为将Linux Docker引入Windows而创建的一

  • 问题内容: 有人可以帮助我了解 docker run 和 docker container run 之间的区别吗? 当我执行 docker run –help 和 docker container 从docker cmd行 运行–help时 。我看到以下 在新容器中运行命令 。 他们在内部运行容器的方式有什么不同,还是两者都在做相同的工作? 根据https://forums.docker.com/

  • 问题内容: 和之间有什么区别? 假设在dockerized项目路径中有一个文件: 和 问题答案: 可以被认为是DockerCLI的包装器(实际上,它是python中的另一种实现,如[注释中所述),以节省时间并避免500个字符长的行(并同时启动多个容器)。它使用一个名为的文件来检索参数。 您可以在此处找到docker- compose文件格式的参考。 因此,基本上,您将阅读,查找包含该语句的所有服务