似乎我的服务器空间不足,并且某些部署的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>"
}
如何使我的服务再次运行?
答案 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