亚马逊ECS和亚马逊EC2有什么区别?

238

我刚开始接触AWS EC2。我知道EC2就像是一台远程计算机,我可以在上面做几乎所有想做的事情。然后我发现了ECS。我知道它使用Docker,但我对这两者之间的关系感到困惑。

ECS只是在EC2上安装Docker吗? 如果我已经有一个EC2并启动了ECS,这意味着我有两个实例吗?

10个回答

295
你的问题
ECS只是在EC2上安装docker吗?如果我已经有了一个EC2,然后启动ECS,这是否意味着我有两个实例?
不是。AWS ECS只是EC2实例的逻辑分组(集群),所有作为ECS一部分的EC2实例都充当Docker主机,即ECS可以向它们(EC2)发送命令以启动容器。如果你已经拥有一个EC2,然后启动ECS,你仍然只有一个实例。如果你添加/注册EC2(通过安装AWS ECS容器代理),它将成为集群的一部分,但仍然是单个EC2实例。
没有任何EC2注册(添加到集群)的Amazon ECS毫无用处。

简短总结

概述

  • EC2 - 简单来说是一个远程(虚拟)机器。
  • ECS 代表 Elastic Container Service - 根据 计算机集群 的基本定义,ECS 基本上是一组逻辑上的 EC2 机器/实例。从技术角度讲,ECS 只是为了有效利用和管理您的 EC2 实例资源,例如存储、内存、CPU等而进行的配置。

为了更简单地解释,如果您启动了一个没有添加EC2实例的Amazon ECS,则它就是无用的,即您无法对其进行任何操作。只有在向ECS添加一个或多个EC2实例后,ECS才有意义。
这里的下一个令人困惑的事情是“容器”术语——它不是完全虚拟化的机器实例,而Docker是我们可以使用的一种技术来创建容器实例。 Docker是您可以安装在计算机上的实用程序,使其成为Docker主机,在此主机上,您可以创建容器(与虚拟机相同,但更轻量级)。总之,ECS只是关于EC2实例的聚类,并使用Docker在这些(EC2)主机上实例化容器/实例/虚拟机。
您只需启动一个 ECS 实例,然后将尽可能多的 EC2 实例注册/添加到其中。您可以添加/注册 EC2 实例,只需在您的 EC2 实例/机器上运行 Amazon ECS 容器代理即可,这可以手动完成,也可以直接使用特殊的 AMI(Amazon Machine Image),即 Amazon ECS 优化的 AMI,它已经具备了 Amazon ECS 容器代理。在启动新的 EC2 实例时,代理会自动将其注册到默认的 ECS 集群中。
Amazon ECS 集群中每个实例(EC2 实例)上运行的容器代理向 Amazon ECS 发送有关实例当前运行任务和资源利用率的信息,并在收到来自 Amazon ECS 的请求时启动和停止任务。有关更多信息,请参见 Amazon ECS Container Agent。一旦设置完成,每个创建的容器实例(无论是哪个 EC2 机器/节点)都将是 Amazon ECS 群集中的一个实例。

欲了解更多信息,请阅读此文档的第十步:启动Amazon ECS容器实例

Choose an AMI for your container instance. You can choose the Amazon ECS-optimized AMI, or another operating system, such as CoreOS or Ubuntu. If you do not choose the Amazon ECS-optimized AMI, you need to follow the procedures in Installing the Amazon ECS Container Agent.

By default, your container instance launches into your default cluster. If you want to launch into your own cluster instead of the default, choose the Advanced Details list and paste the following script into the User data field, replacing your_cluster_name with the name of your cluster.

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

Or, if you have an ecs.config file in Amazon S3 and have enabled Amazon S3 read-only access to your container instance role, choose the Advanced Details list and paste the following script into the User data field, replacing your_bucket_name with the name of your bucket to install the AWS CLI and write your configuration file at launch time. Note For more information about this configuration, see Storing Container Instance Configuration in Amazon S3.

#!/bin/bash
yum install -y aws-cli
aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config

进一步澄清一下-您可以在单个 EC2 实例上创建容器,而不需要使用 ECS。安装任何容器化技术,例如 Docker 并运行创建容器命令,将您的 EC2 设置为 Docker 主机,并拥有尽可能多的 Docker 容器(或者尽可能多地利用您的 EC2 资源)。


9
ECS不是指弹性容器服务吗? - lfk
12
需要翻译的内容:It should be noted that this answer is now substantially out of date with the launch of AWS Fargate in early 2018 (which runs ECS): https://aws.amazon.com/fargate/这个回答已经过时了,因为在2018年初推出了AWS Fargate,它运行ECS,详见https://aws.amazon.com/fargate/。请注意更新。 - bsplosion

160
简单来说,ECS就像一个经理,而EC2实例就像员工。所有这个经理(ECS)管理的员工(EC2)都可以执行“Docker”任务,而且经理也非常了解“docker”。因此,每当您需要“docker”资源时,您就可以找到经理。经理已经从每个员工(EC2)那里了解了状态,并决定谁应该执行任务。
现在,回到您的问题,没有“员工”的经理是没有意义的,但确实是可能存在的。
请点击enter image description here查看更多信息。

7
非常好的解释。谢谢! - Matley
2
你可以拥有没有ECS的EC2实例,但那只是一个简单的虚拟机。 - Lea Reimann
2
什么是任务? - Jan

34

EC2允许您启动单个实例,可用于几乎任何您想要的用途。ECS是一个容器服务,这意味着它将启动实例,以准备启动容器应用程序。

两种服务之间的主要区别在于,使用EC2,您必须以您选择的任何方式(手动、使用CM工具或任何其他方式)独立管理每个实例 - 部署您的应用程序并自己维护服务器之间的连接。

ECS允许您启动一组计算机,作为容器应用程序的部署平台,使您能够将群集中的所有实例视为一个可用于容器负载的大型实例。

至于您的问题 - 您可以启动没有任何实例的ECS集群,但它无法运行任何内容。一旦您在ECS集群中注册了一个EC2实例,容器就可以在其中运行。因此,底线是 - 您可以只使用一个实例使用ECS和EC2,但这不是这些服务构建的实际用例。


12

简单来说,弹性容器服务(Elastic Container Service,ECS)是一个 Docker 容器编排服务。

您可以请求它运行一个或多个 Docker 镜像,可以将其作为自动伸缩的“服务”或即席“任务”运行。

服务和任务运行在一个“集群”上。最初,集群是一组一个或多个预配置的运行 ECS 集群代理的 EC2 服务器。集群代理会在 EC2 服务器上调度容器。这些 EC2 服务器会显示在您的 EC2 实例列表中,并按照常规 EC2 按分钟计费 - 您甚至可以像普通的 EC2 服务器一样 SSH 进入它们。 如果您需要更多的容量来运行更多的服务或任务,或者如果您希望具有针对 EC2 故障的弹性,则需要更多的 EC2 服务器。

大约在2017年11月,AWS 添加了 ECS Fargate。现在,集群可以“无服务器”运行,无需提供 EC2 节点。您只需定义任务或服务所需的 CPU 和内存数量,这意味着您只需支付 CPU 和内存时间而不是 EC2 的费用。


7
ECS代表“弹性容器服务”,是一个容器编排服务。
假设您正在运行Docker容器并决定更新Docker镜像。如果您只有一个容器运行,停止、拉取和运行相对容易,但如果您有10到100个容器运行,则这些步骤将变得繁琐。
使用AWS ECS,您可以控制这一点。您指定是否需要更新,提供最新的镜像ID,ECS将为您处理停止、拉取和运行等命令。它还提供了更多其他功能,请参阅-https://aws.amazon.com/ecs/features/
EC2代表“弹性计算云”,简单来说,它是一台虚拟机。
ECS使用EC2来运行您的容器。
“这些正在运行的Docker容器(任务)在EC2实例上运行”

5

ECS是一个像Kubernetes或Docker swarm一样的容器编排器,EC2是一个用于创建虚拟机的Amazon Elastic Compute Cloud平台。ECS允许您在无服务器环境(Fargate)上运行容器,在这种情况下,您不必运行任何虚拟机,或者在非托管环境中,在这种情况下,您可以在EC2实例上托管容器。


3

好的,正如你所知道的,EC2是AWS上的虚拟机,而ECS是AWS上的容器编排系统。

要使用ECS,您需要将容器运行在一些虚拟机上,其中EC2是提供这种选择之一。

您需要在EC2上安装ecs-agent以建立与ECS的连接。ECS还可以监视您的EC2上资源的使用情况。因此,基本上您选择更高级别的EC2类型,那么您的容器就可以使用更多的资源(CPU / MEM)。


0

Amazon ECS 是“弹性容器服务”的缩写。EC2 使用虚拟化和虚拟机(VM),而 Amazon ECS 用于管理 Docker 容器应用程序。它是一个完全托管的容器编排服务,类似于 Kubernetes。Amazon ECS 通过 Amazon EC2 管理运行的 Docker 容器。

Amazon EC2 是“弹性计算云”的缩写。EC2 允许企业按需访问云计算资源。有超过 500 种实例可供选择,具备最新的处理器、存储、操作系统和网络技术。

Amazon EC2 类似于托管的虚拟机(VM)服务,可以部署预配置的 VM 实例,无需进行管理。企业还可以通过自动转换和部署将本地 VM 配置上传到 EC2,并在云中进行 VM 导出/导入。


0
EC2和ECS是计算服务,这意味着它们都可以托管应用程序。
1. 它们是什么?
a) EC2 -> EC2是一个远程/虚拟计算机。您可以在上面安装任何软件(例如Oracle),并自行管理,也可以安装托管服务解决方���(例如RDS、DynamoDB)。
b) ECS是一个托管的容器服务,用于运行Docker。您可以在一组EC2实例或无服务器选项Far-gate上运行ECS。
2. 托管
a) 直接在E2实例上托管应用程序涉及负载均衡器、自动扩展和EC2实例。它让您可以选择所需的实例类型(计算优化型或内存优化型等)。
b) 在ECS中,您会得到一组称为集群的EC2实例或Far-gate,并在这些集群上部署任务。自动扩展会自动进行。
3. 使用案例
a) 对于一个解决方案,你希望能够控制应用程序的类型、缩放和安全性。此外,你希望能够灵活运行混合解决方案,并通过按需启动和终止实例来控制成本。使用EC2创建自管理的解决方案是一个选择。
b) 对于基于Docker的解决方案,你希望以任务的形式可视化你的工作,这些任务在集群上运行(集群是在EC2实例上运行的一组Docker容器)。ECS是一个解决方案,它根据负载自动进行扩展,并节省了人力投入,但与自管理的解决方案相比略显昂贵,除非考虑到人力投入。

-1

EC2是一项计算服务,使应用程序能够在AWS上运行,而ECS是主要用于编排Docker容器的AWS服务。


2
为什么会有负面评价? - Sohail Si

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接