服务重启后 Docker 节点关闭

Chr*_*sco 6 docker docker-swarm docker-stack

我的服务器似乎空间不足,而且我在部署的一些 docker 堆栈方面遇到了一些问题。我花了一段时间才弄明白,但最终我做到了并删除了几个容器和图像以释放一些空间。

我能够运行service docker restart并且它起作用了。但是,存在一些问题:

  • docker info 说群是“待定”
  • docker node ls显示我唯一的节点(领导者),它是available但它是down
  • journalctl -f -u docker 说`level=error msg="错误删除任务" error="不兼容的值模块=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>"
}
Run Code Online (Sandbox Code Playgroud)

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

Yor*_*ggy 7

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

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

您可以在 /var/lib/ docker /swarm/worker/ 中找到tasks.db文件

我最近遇到了同样的问题,这个解决方法挽救了我的一天。我没有丢失任何与我的 Stacks 相关的数据

2020 年 10 月/19 日更新

问题 ( #34827 ) 已关闭但解决方案仍然相同,删除 tasks.db 文件


Jav*_*ñez 4

选项1:

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

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

systemctl stop docker
rm -Rf /var/lib/docker/swarm
systemctl start docker
docker swarm init
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,在没有备份的情况下执行此操作意味着您会丢失群中的所有定义 (2认同)
  • 是的,这不是生产集群的解决方案。但对于只有一个节点进行开发,它是有效的。 (2认同)