Docker Swarm创建服务异常求助:执行命令后提示符无返回
Docker Swarm服务创建异常排查方案
EC2安全组端口未放行
Docker Swarm集群节点间通信依赖特定端口,必须在EC2安全组中开放:- 管理节点:
2377/tcp(集群管理通信)、7946/tcp/udp(节点间成员通信)、4789/udp(Overlay网络数据传输) - 工作节点:
7946/tcp/udp、4789/udp、2376/tcp(Docker API通信,建议开放)
默认EC2安全组仅开放SSH端口,若未配置上述规则,节点间无法同步状态,服务调度会持续失败。
- 管理节点:
节点网络连通性故障
在各节点间执行ping <目标节点IP>确认基础网络可达;再用telnet <目标节点IP> 2377、telnet <目标节点IP> 7946测试关键端口是否畅通。网络不通会导致Swarm无法完成服务的分发与状态同步。Docker版本不兼容
在所有节点执行docker --version,确保管理节点与工作节点的Docker主版本号一致。版本差异会引发Swarm通信协议不匹配,导致服务状态异常波动。镜像拉取失败
在每个节点手动执行docker pull alpine,验证镜像能否正常拉取。若节点无法获取镜像,服务会反复尝试启动并失败,进入状态循环。可配置国内镜像源解决拉取慢或失败问题。Swarm节点状态异常
在管理节点执行docker node ls,查看所有节点状态是否为Ready。若工作节点状态非Ready,需重新执行docker swarm join命令,确保加入时使用的令牌和管理节点IP正确。实例资源不足
用top或htop查看EC2实例的CPU、内存使用率。若实例配置过低(如t2.micro),可能无法支撑3个容器的启动需求,导致服务反复重启。
内容的提问来源于stack exchange,提问作者UserJohn
相关产品推荐
相关产品推荐

