最近需要将训练好的模型通过docker部署到阿里云服务器上(linux系统)。我在阿里云服务器本地用curl 命令是可以访问部署好的模型的。但是通过外网始终无法访问阿里云服务器。通过百度,最终解决了该问题,现分享一下。

       通过外网不能访问的原因,可能是有三个:

(1)阿里云的安全组没有开启端口;

(2)防火墙;

(3)在用docker生成容器时,端口映射错了。

        鉴于本人能在内网访问模型,所以第三点就排除了。对于第二点,查看防火墙,发现默认的防火墙是关闭的,所以第二点也可以排除。关于防火墙的相关内容请参阅这篇博文:https://blog.csdn.net/qq_28949495/article/details/82227233 ,其中关键内容拷贝如下:

====配置====firewall-cmd
查看版本:firewall-cmd --version
查看帮助:firewall-cmd --help
显示状态:firewall-cmd --state
查看所有打开的端口:firewall-cmd --zone=publiu --list-ports
更新防火墙规则:firewall-cmd --reload
查看区域信息:firewall-cmd --get-active-zones
查看指定接口所属区域:firewall-cmd --get-zone-of-interface-eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态:firewall-cmd --panic-off
查看是否拒绝:firewall-cmd --query-panic
 
===开启一个端口===
 
添加:
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后生效)
 
重新载入:
firewall-cmd --reload
 
查看:
firewall-cmd --zone=public --query-port=80/tcp
 
删除:
firewall-cmd --zone=public --remove-port=80/tcp --permanent

       那么剩下的就是第一点需要检查了。通过百度查阅发现,在购买阿里云服务器时,有默认的端口是开放的,所以我就尝试用默认的端口,最后成功了。如果你不想用默认的端口,而是要自己设置哪些端口需要开放,那么请自行百度,本人因没有权限,所以没有自己设置,只用默认端口。但这篇博文写的比较清楚,请参阅:https://www.sohu.com/a/323359841_100082689  

参考资料:https://blog.csdn.net/tianya0138/article/details/105217782

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐