如何解决这个问题而不丢失管理器中已配置的服务和节点?目前所有服务都运行没有问题,但是当我尝试运行
docker node ls
时,它返回:
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
运行时
docker swarm init
它返回:
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
如果我运行
docker swarm leave
,我担心会丢失添加到群中的服务和节点,因为数量太多,无法手动创建它们。
Docker 版本
Client: Docker Engine - Community
Version: 25.0.2
API version: 1.44
Go version: go1.21.6
Git commit: 29cf629
Built: Thu Feb 1 00:22:57 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 25.0.2
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: fce6e0c
Built: Thu Feb 1 00:22:57 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
感谢您提供的任何帮助,
docker 节点启动时的起始位置始终是
journalctl -xfu docker.service
诊断 swarm 问题时
docker info
显示管理器 ip 列表。
这将确认集群是否因为有太多不可用的管理器而失去法定人数。
无论如何,如果这是您可以尝试从中恢复的唯一管理器,那么
docker swarm init --force-new-cluster
会将其重置为群体的单一管理器。这将保留现有的集群状态:服务、配置等,以及加入密钥,以便工作人员应该自动重新加入。任何其他管理员都会尝试重新加入,但处于不一致的状态,因为它们尚未重置,因此您需要 docker node rm
并重新添加它们。