服务重启后Docker节点关闭

时间:2018-06-19 16:38:29

标签: docker docker-swarm docker-stack

似乎我的服务器空间不足,并且某些部署的Docker堆栈出现了一些问题。花了我一段时间才弄清楚,但最终我做到了,并删除了几个容器和图像以释放一些空间。

我能够运行service docker restart并成功运行。但是,存在一些问题:

  • docker info说该群“正在等待”
  • docker node ls显示了我唯一拥有的节点(领导者),它是available但它是down
  • journalctl -f -u docker说`level = error msg =“错误删除任务” error =“不兼容的值module = node / agent / worker node.id =”

运行docker service ls时,所有服务都具有0/1副本。

这是运行docker node ls

时的状态
"Status": {
    "State": "down",
    "Message": "heartbeat failure for node in \"unknown\" state",
    "Addr": "<ip and port>"
},
"ManagerStatus": {
    "Leader": true,
    "Reachability": "reachable",
    "Addr": "<ip and port>"
}

如何使我的服务再次运行?

4 个答案:

答案 0 :(得分:0)

选项1:

等等。有时它会自行修复。

选项2(可能因操作系统而异):

systemctl stop docker
rm -Rf /var/lib/docker/swarm
systemctl start docker
docker swarm init

答案 1 :(得分:0)

首先检查节点的详细信息: **

  

docker节点ls

** 如果节点的状态仍然显示不下并且可用性处于活动状态,则可能是节点上正在运行的服务停止。 将服务创建为全局模式
要么 通过以下命令更新在swarm中运行的全局服务:

  

docker服务更新--force

答案 2 :(得分:0)

有时,当您重新启动或更新Docker版本时, tasks.db 文件会损坏。

这是一个未解决的问题(#34827),有人建议解决此问题的方法是移动 tasks.db 文件并测试是否可以解决问题,然后删除任务。 db文件。 Docker会自动为您创建一个新的。

您可以在/ var / lib / docker / swarm / worker /

中找到 tasks.db 文件。

我最近也遇到了同样的问题,这个workaround挽救了我的生活。我没有丢失任何与堆栈有关的数据

答案 3 :(得分:0)

我找到了下一个解决方案 https://forums.docker.com/t/docker-worker-nodes-shown-as-down-after-re-start/22329

  

重新启动docker服务后的领导节点已关闭。

     

我通过将辅助节点提升为管理者节点并随后将其固定来解决此问题   新的经理节点降级失败的领导节点。

ubuntu@staging1:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
y0363og32cur9xq9yy0nqg6j9 * staging1 Down Active Reachable
x68yyqtt0rogmabec552634mf staging2 Ready Active

ubuntu@staging1:~$ docker node promote staging2

root@staging1:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
plxkuqqnkxotrzy7nhjj27w34 * staging1 Down Active Leader
x68yyqtt0rogmabec552634mf staging2 Ready Active Reachable

root@staging2:~# docker node demote staging1

root@staging2:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
plxkuqqnkxotrzy7nhjj27w34 staging1 Down Active
x68yyqtt0rogmabec552634mf * staging2 Ready Active Leader

root@staging2:~# docker node rm staging1

Get join-token from leader node:
root@staging2:~# docker swarm join-token manager

Reconnect failed node to docker swarm cluster:

root@staging1:~# docker swarm leave --force
root@staging1:~# systemctl stop docker
root@staging1:~# rm -rf /var/lib/docker/swarm/
root@staging1:~# systemctl start docker
root@staging1:~# docker swarm join --token XXXXXXXX 192.168.XX.XX:2377

root@staging1:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
y0363og32cur9xq9yy0nqg6j9 * staging1 Ready Active Reachable
x68yyqtt0rogmabec552634mf staging2 Ready Active Leader

root@staging1:~# docker node demote staging2

root@staging1:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
y0363og32cur9xq9yy0nqg6j9 * staging1 Ready Active Leader
x68yyqtt0rogmabec552634mf staging2 Ready Active