如何通过YAML文件在Azure容器实例中配置端口转发?
Azure容器实例YAML的端口映射限制与替代方案
Azure容器实例(ACI)的服务设计不支持Docker那样的主机端口到容器端口的映射(即<外部端口>:<容器端口>的格式),这并非YAML Schema的限制,而是ACI本身的架构特性决定的:
- ACI的
ports配置仅用于声明容器需要暴露的端口,这些端口会直接绑定到ACI实例的公网/内网IP上,不存在“主机端口”这一层中转,外部访问时直接通过ACI_IP:容器端口连接。 - 你之前配置的两个端口,只是同时开放了容器内的11401和1433端口,外部可以分别通过对应端口访问,并非端口转发。
如果需要实现类似14000:1433的端口转发效果,可以通过以下两种方式解决:
修改容器内服务的监听端口
如果有权限修改容器镜像或启动参数,直接让容器内的服务(比如MSSQL)监听目标端口14000,然后在ACI YAML中仅暴露该端口:containers: - name: mssql-container image: mcr.microsoft.com/mssql/server environmentVariables: - name: ACCEPT_EULA value: "Y" - name: MSSQL_SA_PASSWORD value: "your-password" - name: MSSQL_TCP_PORT value: "14000" ports: - port: 14000 protocol: TCP借助Azure网关类服务做端口转发
如果无法修改容器镜像,可以在ACI前端部署Azure应用网关或负载均衡器(需将ACI部署在VNet内),通过配置转发规则,将外部的14000端口流量转发到ACI实例的1433端口。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

