我的 Docker 经理无缘无故地放弃了 swarm,要求我进行 docker swarm init。如果这样做的话,增加的服务和节点会丢失吗?

问题描述 投票:0回答:1

如何解决这个问题而不丢失管理器中已配置的服务和节点?目前所有服务都运行没有问题,但是当我尝试运行

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 docker-compose docker-swarm
1个回答
0
投票

docker 节点启动时的起始位置始终是

journalctl -xfu docker.service

诊断 swarm 问题时

docker info
显示管理器 ip 列表。

这将确认集群是否因为有太多不可用的管理器而失去法定人数。

无论如何,如果这是您可以尝试从中恢复的唯一管理器,那么

docker swarm init --force-new-cluster
会将其重置为群体的单一管理器。这将保留现有的集群状态:服务、配置等,以及加入密钥,以便工作人员应该自动重新加入。任何其他管理员都会尝试重新加入,但处于不一致的状态,因为它们尚未重置,因此您需要
docker node rm
并重新添加它们。

© www.soinside.com 2019 - 2024. All rights reserved.