Ubuntu本地可调用Docker Swarm部署的Spring Boot API,CentOS服务器无法调用求助
Docker Swarm部署Spring Boot API在CentOS无响应的排查思路
检查CentOS防火墙与SELinux限制
- 先确认8080端口是否被防火墙放行:执行
firewall-cmd --list-ports,如果看不到8080/tcp,运行firewall-cmd --add-port=8080/tcp --permanent,再执行firewall-cmd --reload生效 - 检查SELinux状态:执行
getenforce,如果返回Enforcing,临时关闭测试setenforce 0,如果curl能通了,再永久配置允许端口:semanage port -a -t http_port_t -p tcp 8080
- 先确认8080端口是否被防火墙放行:执行
验证Docker Swarm端口映射与容器状态
- 执行
docker service ls,确认目标服务的端口映射显示为*:8080->8080/tcp - 执行
docker service ps <你的服务名称>,检查容器是否处于Running状态,没有频繁重启的情况 - 进入容器内部测试接口:
docker exec -it <容器ID> curl http://localhost:8080/api/v1/hello/,如果容器内正常返回,说明问题出在外部网络到容器的通路
- 执行
排查CentOS主机端口占用与网络解析
- 检查8080端口是否被其他进程占用:
ss -tulpn | grep 8080,如果有其他进程占用,要么修改API的端口配置,要么停止占用进程 - 尝试用CentOS主机的公网/内网IP代替localhost调用:
curl --location --request GET 'http://<主机IP>:8080/api/v1/hello/',如果IP能通,可能是/etc/hosts中localhost的解析异常
- 检查8080端口是否被其他进程占用:
检查Docker Swarm网络配置
- 查看Swarm overlay网络详情:
docker network inspect <你的Swarm网络名>,确认容器已正确加入网络,IP地址配置正常 - 如果是多节点Swarm集群,确认CentOS节点的Swarm必备端口(2377/tcp、7946/tcp/udp、4789/udp)已开放,单节点集群可忽略此步
- 查看Swarm overlay网络详情:
查看API容器日志排查应用问题
- 拉取容器日志:
docker service logs <你的服务名称>,检查是否有请求到达容器但应用处理失败的日志,比如路径匹配错误、依赖缺失等异常信息
- 拉取容器日志:
内容的提问来源于stack exchange,提问作者gilvictor
相关产品推荐
相关产品推荐

