如何以非交互方式调用 'docker swarm unlock'?

How to call 'docker swarm unlock' non-interactively?

如何从脚本中以非交互方式调用 'docker swarm unlock'?

通常当您 运行 解锁命令时,您会得到如下交互式提示:

node $ docker swarm unlock
Please enter unlock key: 

我已尝试 运行以下操作:

node $ echo "SWMKEY-1-g8Kpx6C7xIIaabdcefghMLB5YYaf5OSLL4sA1234567" | docker swarm unlock

这确实解锁了我的群,但命令永远不会 returns。它只是挂在那里。

documentation 看来,没有任何额外的标志可以传递给解锁命令。

我做了更多的调查和测试。我没有正确理解我看到的问题。

可以使用如下命令以非交互方式解锁docker群节点:

node $ echo "SWMKEY-1-g8Kpx6C7xIIaabdcefghMLB5YYaf5OSLL4sA1234567" | docker swarm unlock

其中 SWMKEY-1-g8Kpx6C7xIIaabdcefghMLB5YYaf5OSLL4sA1234567 是解锁密钥。

但是,您需要 运行 在 swarm 集群中所有锁定的节点上执行此操作。我错误地假设您只需要 运行 集群中单个节点上的解锁命令,这将解锁所有节点。

我的场景如下:

我有一个 3 节点集群,由虚拟机 node-1、node-2 和 node-2 运行ning 组成,处于集群模式。我重新启动了所有 3 个虚拟机。然后我 运行 仅在节点 1 上执行非交互式解锁命令,而该命令没有 return。相反,我需要 运行 所有节点上的解锁命令。

我还应该指出 'docker swarm unlock' 的行为是相同的,无论您是否以交互方式使用它。当我之前测试交互式 'docker swarm unlock' 时,我一直在使用单节点 swarm 集群。