0

我正在使用 docker swarm,并将图像存储在AWS ECR中。我正在使用自动缩放,所以实例一直在上升和下降。当节点启动时,它们加入集群并且 docker swarm 部署容器。

在我创建服务后的几个小时内它运行良好,然后在某些时候 docker 停止将容器部署到节点,直到我手动去那里运行docker swarm update --with-registry-auth myservice. 它部署了所有容器并工作了几个小时,然后再次停止。

我正在使用aws ecr credential helper登录注册表,它一直运行良好。但我的猜测是,docker 不会不时自动更新凭据,因为每个令牌仅在几个小时内有效。

我需要做什么才能让 docker swarm 不时自动更新凭据?我想我可以docker service update --with-registry-auth每小时在 cron 上运行一次,但我不确定这是否是正确的路径。

4

1 回答 1

0

我正在研究这个答案,并看到你对跟踪这个的关键问题之一的评论,所以认为你已经比我走得更远了。

不是一个 ECR 人,我需要赶上 :)

这个ECR 助手问题和它提到的 moby/moby 问题(以及它们的嵌套问题)我更好地理解了 Swarm 服务定义中的身份验证存储和限制。

是的,如果没有适当的本地 Docker 支持,我敢打赌最终的解决方案会像您建议的那样。我不喜欢在 Swarm 中做任何事情,除非它是 Swarm 服务,所以:

  1. 让 ECR 助手在容器中工作并创建一个绑定挂载管理器节点 docker 套接字的服务。
  2. 它在本地主机引擎上执行身份验证。
  3. 您有一个 cron 容器,作为第二个服务,也被限制为一个管理器,docker service update --with-registry-auth用于使用 ECR 的每个服务。我认为这不会导致任务重新创建,但尚未对其进行测试。

然后我发现了这个评论,听起来好像有人这样做了。但是,似乎该 repo仅适用于使用 Docker for AWS CloudFormation 模板创建的群。如果该解决方案也适用于 AWS中的任何集群,那就太好了。

如果您获得了一个工作设置并创建了一个关于它的 gist 或 repo,我很乐意提供帮助或审查。

于 2018-01-27T22:48:32.263 回答