0

我有 5 个节点(3 个管理器和 2 个工作节点)的 docker swarm 集群。从 AWS ECR 注册表部署图像。在启动服务之前,在所有 Swarm 节点上使用 ECR 对 Docker 进行身份验证"aws ecr get-login -"

由于登录令牌仅在 12 小时内有效。要在 12 小时到期后运行更新的图像,我需要"aws ecr get-login -"在所有 Swarm 节点上运行还是只在 Leader 节点上运行,因为 docker service create 仅从 Leader 运行?

4

1 回答 1

0

无论是 docker 中的 docker、节点、主机还是虚拟机,如果他们第一次想要拉取镜像,他们都需要登录到 ECR 并获取令牌来拉取其余的镜像。

在此处输入图像描述

在您的情况下,Leader 意味着该节点是为 swarm 做出所有 swarm 管理和编排决策的主要管理器节点,因此最好从领导节点执行此类任务。

AWS ECR 登录取决于机器。如果需要从 ECR 中拉取 10 张图像,则只需在 12 小时内首次登录并获取一次令牌,无需每次都登录。

运行上一步中返回的 docker login 命令。此命令提供一个有效期为 12 小时的授权令牌。

重要的

当您执行此 docker login 命令时,系统上的其他用户可以在进程列表 (ps -e) 显示中看到该命令字符串。由于 docker login 命令包含身份验证凭据,因此您系统上的其他用户可能会以这种方式查看它们。他们可以使用凭证来获得对您的存储库的推送和拉取访问权限。如果您不在安全系统上,则应考虑此风险并通过省略 -p 密码选项以交互方式登录,然后在出现提示时输入密码。

于 2019-09-03T19:33:41.970 回答