当前位置: 首页 > 知识库问答 >
问题:

AWS-ECS-如何在现有ECS(具有1个EC2)实例上重新部署更新的Docker映像?

冷英光
2023-03-14

首先,我在AWS中创建了一个包含Docker映像的存储库。

然后我创建了一个任务定义和一个ECS/EC2集群。最后,我使用集群和任务定义创建了一个服务。工作正常。

如何在现有集群上重新部署更新的Docker映像?

仅仅用新的(或现有的)任务“更新”服务是行不通的。即使使用“强制新部署”选项也没有效果。

共有2个答案

洪弘毅
2023-03-14

根据AWS留档,你不能真的这么做...你可以在这里阅读-https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html

只有通过“创建任务定义的新版本”任务定义-

它将在您的回购中使用“最新”版本(当然最好用最新的标记),或者自己添加标记。

顺便说一句,除非您已经准备好这样做,否则我会将这些更新作为ci/cd的一部分使用json进行自动化处理。

屠君墨
2023-03-14

如果您没有在容器定义中指定ECR图像的标记,它将始终获取最新的标记。因此,有两种方法可以实现重新部署。

>

  • 确保您的服务有足够的空间来部署新任务,例如,如果您所需的任务数为1,则必须将最大百分比设置为200,这意味着您可以允许1*200%=2个任务在部署时同时运行,然后只需键入以下命令:aws ecs update service--cluster

    或者,在您将映像更新到ECR后,您可以手动终止现有任务并创建一个新任务(通常,创建过程应该由ECS自己完成,只要您的自动缩放配置设置正确)。

  •  类似资料:
    • 一旦所说的图像在相应的注册表中被更新,那么让我的亚马逊ECS任务更新其Docker图像的正确方法是什么?

    • 但它有说明: 此操作仅由Amazon ECS代理使用,不打算在代理之外使用。 看起来不像是有效的解决方案。 所以我: > 通过名为“test-cluster”的CreateCluster方法创建新的集群。 通过RegisterTaskDefinition创建新任务 创建了新的EC2实例,该实例具有ECS优化的AMI类型的ecsInstanceRole角色,这对我所在的区域是正确的。那里是问题开始的

    • 我创建了一个启动类型为EC2的AWS ECS集群。基于ec2+windows的集群。我必须在这个集群内运行java应用程序的docker映像。我创建了基于linux的docker映像,但它不能在windows集群中工作。我得到以下错误:状态原因cannotpullcontainererror:映像操作系统“Linux”不能在此平台上使用 我的docker文件是:

    • 我使用docker-composing创建了一个Docker容器。在我的本地环境中,我能够毫无问题地启动我的应用程序。 现在,我想将所有docker容器部署到AWS EC2(ECS)。在阅读了ECS文档后,我发现我们可以使用相同的docker compose在ECS中使用ECS-CLI进行部署。但ECS-CLI目前不适用于windows实例。因此,现在我不知道如何使用docker compose使

    • 我正在尝试配置AWS ECS使用awsvpc模式和IAM角色,专门用于任务。我们的ECS实例是fargate发射类型的。在任务配置中指定了一个任务IAM角色之后,我们ssh进入任务并尝试运行awscli命令,并得到以下错误: 为了排除故障,我们在一个EC2启动类型的容器中运行了相同的docker映像,当我们运行相同的awscli命令时,它错误地说假设的角色没有足够的权限。我们注意到这是因为它承担了

    • 我目前正在使用ECS部署web应用程序。此应用程序在我的ECR上推送,带有最新标签,但放置新图像似乎不会改变部署时的代码。 我尝试使用在这里找到的答案如何将更新的Docker映像部署到Amazon ECS任务?使用 放在我的ECS配置中,并将部署\u minimum\u health\u percent=0和部署\u maximum\u percent=200放在我的部署设置中。 我注意到图像摘要