- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始使用 AWS EC2。我知道 EC2 就像一台远程计算机,我几乎可以在其中完成我想做的所有事情。后来我知道了ECS。我知道它使用 Docker,但我对这两者之间的关系感到困惑。
ECS 只是 EC2 中的 Docker 安装吗?如果我已经有 EC2 并且启动了 ECS,是否意味着我有两个实例?
最佳答案
你的问题
Is ECS just a docker install in EC2? If I already have a EC2, then I start a ECS, does it mean I have two instance?
没有。 AWS ECS
只是 EC2
的逻辑分组(集群)实例,以及所有 EC2
ECS
的实例部分充当 Docker
主机,即 ECS 可以发送命令以在其上启动容器( EC2
)。如果您已有 EC2,然后启动 ECS,您仍然拥有单个实例。如果您将 EC2 添加/注册(通过安装 AWS ECS 容器代理)到 ECS,它将成为集群的一部分,但仍然是 EC2 的单个实例。
未注册任何 EC2(添加到集群)的 Amazon ECS 毫无用处。
<小时/>TL;博士
概述
EC2
- 只是一个远程(虚拟)机器。 ECS
代表 Elastic Container Service
- 根据 computer cluster 的基本定义, ECS
基本上是一个逻辑分组 EC2
机器/实例。从技术上讲ECS
仅仅是一个配置以有效使用和管理您的EC2
实例资源,即存储、内存、CPU 等。为了进一步简化它,如果您启动了 Amazon ECS
没有EC2
添加到其中的实例,它没有任何用处,即您对此无能为力。 ECS
仅一次(或多次)才有意义 EC2
实例已添加到其中。
这里下一个令人困惑的事情是容器术语 - 它不是完全虚拟化的机器实例,而Docker是我们可以用来创建容器实例的一项技术。 Docker
是一个可以安装在我们机器上的实用程序,这使得它成为 Docker
主机,在该主机上您可以创建容器(与虚拟机相同 - 但更轻量级)。综上所述,ECS
只是关于 EC2 实例的集群,并使用 Docker
在这些 ( EC2
) 主机上实例化容器/实例/虚拟机。
您所需要做的就是启动 ECS
,并注册/添加尽可能多的EC2
根据需要为其实例。您可以添加/注册 EC2 实例,您所需要的只是在 EC2 实例/机器上运行的 Amazon ECS 容器代理,这可以手动完成,也可以直接使用特殊的 AMI(Amazon 系统镜像)完成,即 Amazon ECS 优化的 AMI,该 AMI 已经具有Amazon ECS 容器代理。在启动新的 EC2 实例期间,代理会自动将其注册到默认的 ECS 集群。
在 EC2
内的每个实例(Amazon ECS
实例)上运行的容器代理 cluster 将有关实例当前运行的任务和资源利用率的信息发送到 Amazon ECS,并在收到来自 Amazon ECS 的请求时启动和停止任务。欲了解更多信息,请参阅Amazon ECS Container Agent 。设置后,每个创建的容器实例(无论 EC2
机器/节点)都将是 Amazon ECS
中的一个实例。的群。
有关更多信息 – 请阅读本文档中的步骤 10:Launching an Amazon ECS Container Instance :
<小时/>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.configOr, 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
的资源允许的数量)。
关于amazon-web-services - Amazon ECS 和 Amazon EC2 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40575584/
尽管我的 EC2 实例(带有针对 ECS 优化的 AIM)正在运行 ecs 代理,但容器并未在我的 EC2 中启动。为了确认 ecs-agent 正在我的 EC2 实例上运行,我检查了: ecs 日志
我想在一个任务定义中使用客户端和服务器在 aws ecs 中运行套接字程序。当我使用 awsvpc 网络模式并每次连接到本地主机上的服务器时,我都可以运行它。这很好,所以我不需要知道服务器的 IP 地
我有一个在 AWS ECS 上运行的 Docker 容器。我不想要负载均衡器,因为容器是用来处理 websocket 连接的。 https://aws.amazon.com/getting-start
我想在我的 AWS ECS/Fargate 集群上的公共(public) Docker 镜像中启动交互式 shell,以便从集群内部运行网络/连接测试。 似乎官方的方法是使用 aws ecs run-
我在 ECS Fargate 上托管了一个 Shiny 的应用程序。它运行得相当好,但偶尔在使用该应用程序时它会崩溃。我在事件选项卡中将其追溯到以下内容: service YYYY has start
在 AWS ECS 中创建容量提供程序时。我们正在填充的值 Target capacity %,在超过这个值后我们的集群缩小,但我很好奇当前集群的这个值是如何计算的,如果我想检查当前的是什么集群的值(
在 AWS ECS 中创建容量提供程序时。我们正在填充的值 Target capacity %,在超过这个值后我们的集群缩小,但我很好奇当前集群的这个值是如何计算的,如果我想检查当前的是什么集群的值(
我在 AWS 上设置了具有多个目标组和应用程序负载均衡器的 Fargate ecs 服务。它按预期运行。 然后我尝试使用本教程设置管道 https://docs.aws.amazon.com/Amaz
我有一个运行任务的 ECS 集群服务,可以使用 AWS 控制台查看其 Cloudwatch 日志流。 如何为 awslogs-stream-prefix 设置日期,因为我想按日期识别日志流。 "c
我正在使用两个容器部署 ECS Fargate 任务:1 个反向代理 nginx 和 1 个 python 服务器。对于每个我有一个 ECR 存储库,我有一个 CI/CD CodePipeline 设
我在 AWS ECS 上部署了一个 CloudFormation 堆栈,比如 teststack , 通过命令 aws cloudformation deploy --template-file ./
我这里有一些具体的用例。我需要自动扩展在 ECS Fargate 上运行的分布式 Web 应用程序。问题是所有节点都需要在内存中保留相同的数据(因此增加节点数量无助于内存压力)。因此,只有在水平(添加
我正在寻找有关为 ECS 任务分配内存的指南。我正在为希望在服务器成本上尽可能便宜的客户运行 Rails 应用程序。我正在查看具有 2 个 CPU 和 4 GB 内存的中等服务器大小。 大多数情况下,
我是 ECS 新手,我正在尝试使用 Cloudformation 部署它。 我通过查看文档以及从博客和一些文章中找到的一些示例来制作以下 cloudformation 模板。 但是,由于某种原因,它在
也许这很愚蠢,但如果我创建一个 ECS 任务定义(例如参见 https://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aw
ECS 的容器定义允许您指定 memoryReservation对于每个容器: The soft limit (in MiB) of memory to reserve for the contain
我在 ca-central 区域创建了一个 AWS ECS 实例。它与每次更新服务时都会更改的动态公共(public) ip 一起使用。到目前为止一切都很好。 由于需要一个公网静态IP,所以我在同一区
Invalid 'containerPort' setting for container 'prerenderContainer'.(Service: AmazonECS; Status Code:
如果我在 ECS 服务级别进行自动扩展,我看不到使用容量提供程序扩展 ECS 集群的意义: https://docs.aws.amazon.com/AmazonECS/latest/developer
关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。 想改进这个问题?更新问题,使其成为 Stack Overflow 的 on-topic。 1年前关闭。
我是一名优秀的程序员,十分优秀!