You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure VM无法访问Linux VM内Docker容器 求等效VSCode端口转发命令

React应用Docker容器端口转发无法访问排查方案

故障背景

  • 已完成React应用Docker容器化封装,所有依赖安装完成,应用可在Linux VM环境正常运行
  • 当前容器启动命令:docker run -p 80:80 react_image
  • 访问链路:Azure VM -> 部署Docker的Linux VM -> 容器内React应用
  • 故障表现:在Azure VM访问localhost:80无法加载应用,使用VSCode端口转发功能可正常访问
  • 需求:实现与VSCode端口转发等效的命令行能力,解决访问不通问题

排查步骤与解决方法

  • 优先排查容器内应用监听地址问题
    React官方脚手架(CRA、Vite)默认启动的开发服务仅绑定127.0.0.1回环地址,不接受容器外部的请求,这是该类问题最高发的原因:
    • 若为CRA搭建的项目,修改package.json中的启动脚本为"start": "HOST=0.0.0.0 react-scripts start"
    • 若为Vite搭建的项目,修改启动脚本为"dev": "vite --host 0.0.0.0"
      修改后重新构建镜像,再启动容器即可。
  • 验证Docker端口映射生效状态
    在Linux VM上执行docker ps,查看对应容器的端口映射列,需显示0.0.0.0:80->80/tcp才代表映射规则正常绑定到所有网卡。如果仅绑定127.0.0.1,需要调整Docker启动参数。
  • 放行Linux VM本地防火墙规则
    根据Linux VM使用的防火墙组件,放行80端口TCP入站流量:
    # ufw防火墙(Ubuntu默认)
    sudo ufw allow 80/tcp
    sudo ufw reload
    
    # firewalld防火墙(CentOS/RHEL默认)
    sudo firewall-cmd --add-port=80/tcp --permanent
    sudo firewall-cmd --reload
    
    规则配置完成后,先在Linux VM本地执行curl http://localhost:80,确认可以正常返回React应用的HTML内容,证明Linux VM到容器的链路已经通了。
  • 检查Azure平台网络规则
    确认Azure VM所属的网络安全组(NSG)已经配置入站规则,允许对应源地址访问80端口TCP协议,否则Azure层面会直接拦截流量。
  • 等效VSCode端口转发的命令行实现
    VSCode端口转发本质是基于SSH隧道实现,直接在Azure VM上执行以下命令即可实现完全一致的效果:
    ssh -L 80:localhost:80 <Linux VM登录用户名>@<Linux VM内网/公网IP> -N
    
    执行后保持SSH会话不中断,在Azure VM上访问localhost:80即可正常打开React应用。

内容的提问来源于stack exchange,提问作者Naga kiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:09:57