【问题标题】:How to ensure to update Docker image on AWS ECS?如何确保更新 AWS ECS 上的 Docker 镜像?
【发布时间】:2016-04-21 12:38:53
【问题描述】:

我使用 Docker Hub 来存储私有 Docker 镜像,存储库有一个 webhook,一旦镜像更新,它就会调用我构建的服务:

  • 更新 ECS 任务定义
  • 更新 ECS 服务
  • 注销旧的 ECS 任务定义

服务正在相应地运行。运行后,ECS 使用新任务定义创建新任务,停止使用旧任务定义的任务,服务返回新定义。

关键是 Docker 镜像没有更新,一旦服务在新任务定义中启动,它仍然使用旧镜像。

我做错了吗?如何确保更新 docker 镜像?

【问题讨论】:

  • 你使用独特的标签还是像latest这样的东西?
  • @ZeissS 我用的是最新的。我在 ECS 任务中的定义是 user/image:latest
  • 我建议使用版本标签。我猜 ECS 代理只相当于 docker run。如果明确询问 (docker pull) 或者他不知道图像,则 docker 守护进程只会拉取图像。
  • 我在亚马逊支持上为这种情况打开了一张票。他们说 ecs 代理告诉 docker 做一个拉动。并要求我为这种情况提供一个 ecs 代理日志,但我现在稍微改变了我的工作流程。

标签: amazon-web-services docker aws-ec2 amazon-ecs


【解决方案1】:

分析 AWS ECS 日志后发现问题出在 ECS Docker 身份验证上。

为了解决这个问题,我将以下数据添加到文件 /etc/ecs/ecs.config

ECS_CLUSTER=default
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"YOUR_DOCKER_HUB_AUTH","email":"YOUR_DOCKER_HUB_EMAIL"}}

只需将YOUR_DOCKER_HUB_AUTHYOUR_DOCKER_HUB_EMAIL替换为您自己的信息即可正常使用。

要查找此信息,您可以在自己的计算机上执行docker login,然后在文件 ~/.docker/config.json 中查找数据

有关私有注册表身份验证主题的更多信息,请查看http://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html

【讨论】:

  • 您希望将 ECS_ENGINE_AUTH_DATA 全部放在一行上,而不是分成几行。
  • @SamuelK 谢谢,这只是格式问题,现在已修复。
猜你喜欢
  • 2020-10-04
  • 2016-05-30
  • 2020-07-03
  • 2021-07-02
  • 2018-05-03
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
相关资源
最近更新 更多