Docker-Swarm启动服务一直处于New状态

发布时间 2023-08-24 10:51:53作者: 王寄鱼

一、情况描述

​ 近期有个项目的开发环境需要迁移nas挂载盘,需要把开发环境的服务停止,待迁移完成后重启服务。

​ 该环境使用的docker-swarm启动服务,之前考虑的是swarm是docker原生支持的,启动方便,命令也较为简单,能够满足使用需求。待更换nas盘完成,通知我启动服务。

​ 按照正常的启动脚本,启动我们的服务,会发现集群中有两个服务一直处于new状态无法正常启动。

二、解决思路

​ 使用获取服务日志命令和展示所有服务状态的命令,看到的均为空日志,说明该容器可能压根就没有分配到相应的启动资源。

docker stack ps xxx
docker service logs xxx

​ 考虑到要快速恢复服务,首先想到的是重启docker的stack,重启之后,发现有更多的服务处于new状态无法启动,且在docker的stack中没有日志显示。

​ 此时考虑从系统层面,直接拿docker的服务日志来分析

journalctl -f -u docker | grep error

发现在docker中有大量关于ingress无法分配新的vip的报错

lQLPJxaayqdvii3NBrDNDviw2CcaNoBP79kC_q1HXMAzAA_3832_1712

解决方法:

1.1 重启docker能够临时解决;

1.2 停止已启动的docker容器, 然后删除ingress网络:docker network rm ingress,重新生成ingress网络:

docker network create --driver overlay --ingress --subnet=[10.0.0.0](https://wiki.datagrand.com/10.0.0.0)/16 --gateway=[10.0.0.1](https://wiki.datagrand.com/10.0.0.1) --opt com.docker.network.mtu=1400 ingress

三、学习感悟