AWS EC2上Docker运行的Dash应用无法通过公网IP访问如何解决
AWS EC2 Docker部署Dash应用无法访问排查方案
- 修正Docker端口映射规则
你当前使用的启动命令为docker run -t -i -p 80:80 app_name,该规则是将EC2宿主机的80端口映射到容器内部的80端口,但从应用启动日志可见,Dash服务实际在容器内部监听的是8085端口,端口映射不匹配是访问失败的核心原因。
可选的修正方案有两种:- 保留8085端口访问:使用命令
docker run -d -p 8085:8085 app_name启动容器,需要交互调试可以保留-it参数替换-d参数 - 无需端口直接访问:使用命令
docker run -d -p 80:8085 app_name启动容器,后续直接访问公网IP即可打开应用
- 保留8085端口访问:使用命令
- 验证容器内服务可用性
容器启动成功后,先在EC2实例内部执行curl http://127.0.0.1:8085,如果能正常返回应用内容,说明服务本身运行无异常。 - 确认网络访问规则配置
- 检查EC2安全组入站规则:确保你要访问的端口(80或8085)已经开放TCP协议访问,调试阶段可以临时将源地址设为
0.0.0.0/0,验证通过后再收紧为你本地的公网IP - 检查子网网络ACL:确认EC2所在子网的网络ACL没有拦截对应端口的入站、出站流量
- 检查EC2安全组入站规则:确保你要访问的端口(80或8085)已经开放TCP协议访问,调试阶段可以临时将源地址设为
- 本地访问验证
上述配置全部生效后,在本地浏览器访问对应地址即可:如果用8085映射就访问http://<EC2公网IP>:8085,如果用80端口映射就直接访问http://<EC2公网IP>。注意不要省略http://前缀,避免浏览器默认走HTTPS协议导致访问失败。
内容的提问来源于stack exchange,提问作者arranjdavis
相关产品推荐
相关产品推荐

