一尘不染

如何从破碎的码头工人群中获取秘密

docker

我的集群服务器坏了(Linux系统错误),可惜它只是一个节点。

我阅读了https://docs.docker.com/v17.09/engine/swarm/admin_guide/#back-up-the-
swarm

所以我尝试/var/lib/docker/swarm在新设置的docker服务器上备份和还原它,如下所示:

新的docker守护程序可以在没有任何群集功能的情况下正常运行,但是群集功能不能像以下那样工作:

$ docker service 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 --force-new-cluster

在那之后,每个命令都像

docker service ls

没有响应, 那些使docker daemon挂起

然后,我尝试从后面的文件中提取数据,发现这个https://medium.com/lucjuggery/raft-logs-on-swarm-
mode-1351eff1e690似乎很有用。但是我仍然无法恢复秘密。

只得到类似的东西:

 secrets: <
        secret_id: "6vtndjswxr4fe9kxjtmmtk6af"
        secret_name: "DATABASE_ADMIN_URL"
        file: <
          name: "_DATABASE_ADMIN_URL"
          uid: "0"
          gid: "0"
          mode: -r--r--r--
        >
      >

其中不包含有用的数据。

顺便说一句:我不是在黑客服务器,我希望恢复数据,而不是去调查捆绑服务的所有配置。


阅读 267

收藏
2020-06-17

共1个答案

一尘不染

今天花了我几个小时才弄清为什么docker daemon在挂起后挂起

docker swarm init --force-new-cluster

我相信官方文档https://docs.docker.com/v17.09/engine/swarm/admin_guide/#restore-from-
a-backup缺少一步

因为在我移走docker-state.json之后跑了

docker swarm init --force-new-cluster --advertise-addr <the-server-ip>:2377

事情按预期进行。

2020-06-17