Docker expose指令和-p 指令指定的端口区别
expose指令用法
- 该
EXPOSE指令通知 Docker 容器在运行时侦听指定的网络端口,可以指定端口是侦听 TCP 还是 UDP,如果未指定协议,则默认为 TCP。
EXPOSE 80/tcp EXPOSE 80/udp
EXPOSE指令实际上不会发布端口。它充当构建映像的人员和运行容器的人员之间的一种文档,用于发布要发布的端口。若要在运行容器时发布端口,请使用-pflag ondocker run发布和映射一个或多个端口,或使用-Pflag 发布所有公开的端口并将它们映射到高阶端口- 无论设置
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 命令。
浙公网安备 33010602011771号