Docker expose指令和-p 指令指定的端口区别

expose指令用法

  • 该 EXPOSE 指令通知 Docker 容器在运行时侦听指定的网络端口,可以指定端口是侦听 TCP 还是 UDP,如果未指定协议,则默认为 TCP。
EXPOSE 80/tcp
EXPOSE 80/udp
  • EXPOSE 指令实际上不会发布端口。它充当构建映像的人员和运行容器的人员之间的一种文档,用于发布要发布的端口。若要在运行容器时发布端口,请使用 -p flag on docker run 发布和映射一个或多个端口,或使用 -P flag 发布所有公开的端口并将它们映射到高阶端口
  • 无论设置 EXPOSE 如何,都可以在运行时使用 -p 标志覆盖它们
docker run -p 80:80/tcp -p 80:80/udp ...
  • 要在主机系统上设置端口重定向,请参阅使用 -P 标志

该 docker network 命令支持创建用于容器之间通信的网络,而无需公开或发布特定端口,因为连接到网络的容器可以通过任何端口相互通信

使用 -P 标志启动容器以暴露其端口

  • -P (或 --publish-all ) 标志将所有公开的端口发布到主机。Docker 将每个公开的端口绑定到主机上的随机端口。

    该 -P 标志仅发布显式标记为公开的端口号, 标志允许将容器中的单个端口或端口范围显式映射到主机。

容器内的端口号(服务侦听的位置)不需要与容器外部发布的端口号(客户端连接的位置)匹配。例如,在容器内部,HTTP 服务可能正在侦听端口 8080。在运行时,端口可能绑定到主机上的 8400。

docker run --name grasp -p 8400:8080 -p 443:443 -d grasp

要查找主机端口和公开端口之间的映射,请使用以下 docker port 命令。

 

posted @   baihehua  阅读(214)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示