乐闻世界logo
搜索文章和话题

Docker中的“expose”和“publish”有什么区别?

2月7日 11:26

在Docker中,“expose”和“publish”这两个概念经常被提到,它们都与容器的网络端口配置相关,但具体用途和行为却有所不同。

  1. Expose

    • EXPOSE指令用于Dockerfile中,其主要目的是指定容器在运行时监听的端口,用于文档化。它实际上不会自动开放端口到宿主机。
    • 使用EXPOSE可以为容器的使用者提供信息,说明容器意图打开哪些端口以供通信。但只是作为一种声明,并不意味着外部可以访问这些端口。
  2. Publish

    • 当运行容器时,使用-p--publish标志来映射和开放容器的端口到宿主机的端口。这样做实际上允许从宿主机或外部网络访问这个端口。
    • 例如,使用docker run -p 80:80 nginx,这条命令将容器内的80端口映射到宿主机的80端口上,使得宿主机的80端口可以接受来自外部的请求并转发给容器。

总结来说,EXPOSE是在构建镜像时的声明,指明容器打算用哪些端口,而publish是在运行容器时实际执行的端口映射操作,使外部能够访问到容器的指定端口。

标签:Docker