AWS ECS 服务指向一个任务定义,其中包含 docker 镜像的名称,包括标签。
因此,当我创建新版本的 docker 映像时,我有两种可能性:
- 将任务定义更新到新版本,然后更新服务以指向任务定义的新版本
- 使用一些标签指向最后一个版本,假设“当前”标签将始终指向最后一个版本,任务定义将包含“my-image:current”,然后我需要重新启动 ECS 服务
什么更好,为什么?
为每个构建使用唯一的标签,并更新任务定义以指向新标签(您的第一个选项)。
您将遇到的一个大问题是,一般来说,基于 Docker 的系统会尝试避免拉取已有的映像。如果您重新启动服务,但重新启动的节点发现它已经有my-image:current
,它只会重新运行它,而不会拉取更新的版本。好像是这样can work – “最新”标签在 ECS 任务定义和从 ECR 拉取的容器实例中如何工作? https://stackoverflow.com/questions/56081320/how-does-latest-tag-work-in-an-ecs-task-definition-and-container-instances-pul包括一个似乎可以工作的设置 - 但仅通过观察很难判断您正在使用的确切版本。
避免使用“当前”或“最新”标签的第二个充分理由是能够回滚。例如,如果您使用基于时间戳的标记系统,部署版本 20200323,但它不起作用,则可以很容易地将任务定义重置回版本 20200322,以便在开发人员调试内容时返回到昨天的代码。如果昨天是“当前”,今天也是“当前”,那么就很难弄清楚什么是“非当前”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)