如何从破碎的 docker 群中获取秘密
how to get secrets from broken docker swarm
我的swarm服务器坏了(Linux系统错误),可惜只有一个节点。
我读了https://docs.docker.com/v17.09/engine/swarm/admin_guide/#back-up-the-swarm
所以我尝试备份 /var/lib/docker/swarm
并在新设置的 docker 服务器上恢复它,如下所示:
新的 docker 守护进程在没有任何 swarm 功能的情况下工作正常,但 swarm 功能无法像这样工作:
$ 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 守护程序挂起。
然后我尝试从备份文件中提取数据,我发现这个 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--
>
>
其中不包含有用的数据。
顺便说一句:我不是在攻击服务器,我希望恢复数据而不是调查捆绑服务的所有配置。
今天我花了几个小时才弄明白为什么 docker 守护程序在
之后挂起
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
事情按预期进行。
我的swarm服务器坏了(Linux系统错误),可惜只有一个节点。
我读了https://docs.docker.com/v17.09/engine/swarm/admin_guide/#back-up-the-swarm
所以我尝试备份 /var/lib/docker/swarm
并在新设置的 docker 服务器上恢复它,如下所示:
新的 docker 守护进程在没有任何 swarm 功能的情况下工作正常,但 swarm 功能无法像这样工作:
$ 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 守护程序挂起。
然后我尝试从备份文件中提取数据,我发现这个 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--
>
>
其中不包含有用的数据。
顺便说一句:我不是在攻击服务器,我希望恢复数据而不是调查捆绑服务的所有配置。
今天我花了几个小时才弄明白为什么 docker 守护程序在
之后挂起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
事情按预期进行。