Dockerfile EXPOSE命令语法解析及合法用法疑问
Docker EXPOSE指令语法解析与常见疑问解答
语法描述的实际含义
EXPOSE <port> [<port>/<protocol>...] 的语法可以拆解为:
<port>是<port>/tcp的简写形式,Docker 默认将未指定协议的端口视为 TCP 协议- 方括号
[]表示可以追加一个或多个端口配置项,每个项既可以是纯端口号(默认TCP),也可以是端口/协议的完整格式(支持TCP、UDP)
你之前误以为不能使用EXPOSE 8080/tcp是对语法的误读,这种写法完全合法,文档给出的EXPOSE 80/udp示例也印证了这一点。
EXPOSE 8080 8081是否会暴露两个端口?
是,这条指令会暴露两个TCP端口:8080和8081,等价于:
EXPOSE 8080/tcp EXPOSE 8081/tcp
EXPOSE 80/tcp 80/udp是否属于非法写法?
写法本身语法合法,Docker引擎可以正确识别并同时暴露80端口的TCP和UDP协议。但文档建议分两行编写的原因是提升可读性——避免同一端口的不同协议配置挤在一行导致混淆,属于最佳实践而非强制要求。
内容的提问来源于stack exchange,提问作者tgdavies
相关产品推荐
相关产品推荐

