我通过以下方式以集群模式启动docker:

$ docker swarm init
Swarm initialized: current node (4szigol8wugf0m1bqhxei9bvh) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4oy3q8mzepcjrrms17uwtp0pp0rc1ttkztpq2v97r0detnvokl-2uvc24bcy2gnrc4kmy9ndlsum 192.168.65.3:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

我按照提示中的说明将管理器添加到该群:
$ docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4oy3q8mzepcjrrms17uwtp0pp0rc1ttkztpq2v97r0detnvokl-2xo3hfhghuzsitx1uybqxvyav 192.168.65.3:2377

如您在上面看到的,它显示了另一个添加管理器的命令。所以我再次按照指示运行:
$ docker swarm join --token SWMTKN-1-4oy3q8mzepcjrrms17uwtp0pp0rc1ttkztpq2v97r0detnvokl-2xo3hfhghuzsitx1uybqxvyav 192.168.65.3:2377
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
Error response from daemon: You are attempting to leave the swarm on a node that is participating as a manager. Removing the last manager erases all current state of the swarm. Use `--force` to ignore this message.

但是也不允许离开人群。

我有两个问题:
  • 为什么将管理器添加到集群需要两个命令?一个是docker swarm join-token manager,第二个是docker swarm join --token SWMTKN-1-4oy3q8mzepcjrrms17uwtp0pp0rc1ttkztpq2v97r0detnvokl-2xo3hfhghuzsitx1uybqxvyav 192.168.65.3:2377,下面,我实际上更了解使用 token 添加管理器的第二个命令,那么拥有第一个add manager命令有什么意义呢?
  • 我理解该指令,但是如果由于该节点已在群集中而无法在当前节点中添加管理器,怎么办,也不能离开群集,因为它是一个领导者管理器节点?我没有办法摆脱它吗?
  • 最佳答案

  • 第一个命令不是添加管理器,它只是允许您检索 token 以便能够加入。工作人员和管理人员使用不同的 token ,它显示的默认 token 是给工作人员的。
  • 如果该节点当前是您想要的Swarm中的管理者,那是什么问题?如果它是另一个Swarm中的管理员(您不在乎或其他),那么只需将其保留为--force(如说明中所述),然后使用上述命令加入所需的Swarm?
  • 关于docker - 在docker swarm中添加管理器节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57340252/

    10-16 08:46
    查看更多