【问题标题】:How to call 'docker swarm unlock' non-interactively?如何以非交互方式调用“docker swarm unlock”?
【发布时间】:2017-04-06 15:48:08
【问题描述】:

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

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

node $ docker swarm unlock
Please enter unlock key: 

我已尝试运行以下命令:

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

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

从documentation 看来,我没有可以将任何其他标志传递给解锁命令。

【问题讨论】:

  • 您是否尝试过构建一个期望脚本?只是期望读取标准输出并将数据自动传递给它?
  • @Dockstar,感谢您的建议。我没有尝试过期望脚本,但这可能会奏效。事实证明我有一个不同的错误。

标签: docker swarm


【解决方案1】:

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

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

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

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

但是,您需要在 swarm 集群中所有锁定的节点上运行它。我错误地认为您只需要在集群中的单个节点上运行解锁命令即可解锁所有节点。

我的场景如下:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多