Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

什么是 Amazon Elastic Container Service?

Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,它可轻松运行、停止和管理群集上的 Docker 容器。您可以通过使用 Fargate 启动类型启动您的服务或任务,将群集托管在由 Amazon ECS 管理的无服务器基础设施上。若要进行更多控制,您可以在使用 EC2 启动类型进行管理的 Amazon Elastic Compute Cloud (Amazon EC2) 实例群集上托管您的任务。有关启动类型的更多信息,请参阅 Amazon ECS 启动类型

利用 Amazon ECS,您可以通过简单的 API 调用来启动和停止基于容器的应用程序,可以从集中式服务获取集群状态,并且可以访问许多熟悉的 Amazon EC2 功能。

您可以根据您的资源需求、隔离策略和可用性要求使用 Amazon ECS 计划容器在集群中的放置。借助 Amazon ECS,您无需操作自己的集群管理和配置管理系统,也无需担心扩展管理基础设施。

Amazon ECS 可用于创建一致的部署和构建体验、管理和扩展批处理和提取-转换-加载 (ETL) 工作负载以及在微服务模型上构建先进的应用程序架构。有关 Amazon ECS 使用案例和方案的更多信息,请参阅容器使用案例

Amazon ECS 的功能

Amazon ECS 是一项区域服务,可在区域内的多个可用区中以高度可用的方式简化正在运行的应用程序容器。您可以在新的或现有的 VPC 中创建 Amazon ECS 集群。在集群启动并运行后,您可以定义用于指定在集群中运行的 Docker 容器映像的任务定义和服务。容器映像将在容器注册表中存储和提取,可能存在于您的 AWS 基础设施的内部或外部。

下图显示了使用 Fargate 启动类型的 Amazon ECS 环境的架构:

以下部分将更详细地深入探究 Amazon ECS 基础设施的各个元素。

容器和映像

要在 Amazon ECS 上部署应用程序,必须构建您的应用程序组件以在容器 中运行。Docker 容器是一个软件开发的标准化单位,包含您的软件应用程序需要运行的一切:代码、运行时、系统工具、系统库等。从称为映像 的只读模板中创建容器。

映像通常通过 Dockerfile 进行构建,后者是一个纯文本文件,指定了容器中包含的所有组件。随后,这些映像将存储在注册表 中,可从该表中下载映像并在您的群集上运行映像。有关容器技术的更多信息,请参阅 Docker 基本知识

注意

Fargate 启动类型仅支持使用 Amazon ECR 托管或者在 Docker Hub 上公开的容器映像。私有存储库目前仅支持使用 EC2 启动类型。

任务定义

为了准备要在 Amazon ECS 上运行的应用程序,您创建了任务定义。任务定义是一种 JSON 格式的文本文件,描述了构成应用程序的一个或多个容器 (最多为 10 个)。它可以被视为应用程序的蓝图。任务定义为您的应用程序指定各种参数。任务定义参数的示例有:要使用哪些容器,要使用哪种启动类型,应为应用程序打开哪些端口,应与任务中的容器一起使用哪些数据卷。可用于任务定义的特定参数取决于您使用的启动类型。有关创建任务定义的更多信息,请参阅 Amazon ECS 任务定义

以下是包含运行 NGINX Web 服务器的单个容器的简单任务定义的示例 (使用 Fargate 启动类型)。有关演示在任务定义中使用多个容器的更扩展的示例,请参阅示例任务定义

{ "family": "webserver", "containerDefinitions": [ { "name": "web", "image": "nginx", "memory": "100", "cpu": "99" }, ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "memory": "512", "cpu": "256", }

任务和计划

任务 是群集内的任务定义的实例化。在为 Amazon ECS 中的应用程序创建任务定义后,您可以指定将在集群上运行的任务的数量。

Amazon ECS 任务计划程序负责将任务放置到您的群集中。有多种不同的计划选项可供选择。例如,您可以定义同时运行和维护指定数量的任务的服务。有关可用的不同计划选项的更多信息,请参阅计划 Amazon ECS 任务

集群

当您使用 Amazon ECS 运行任务时,您会将任务放置在群集 上,这是资源的逻辑分组。如果您对群集中的任务使用 Fargate 启动类型,Amazon ECS 将管理您的群集资源。如果您使用 EC2 启动类型,则您的群集将会是您管理的一组容器实例。Amazon ECS 从您指定的注册表中下载容器映像,并在群集内运行这些映像。

有关创建集群的更多信息,请参见 Amazon ECS 集群。如果您使用的是 EC2 启动类型,则您可以在 Amazon ECS 容器实例 阅读有关创建容器实例的信息。

容器代理

容器代理 在 Amazon ECS 群集内的每个基础设施资源上运行。它向 Amazon ECS 发送有关资源的当前正在运行的任务和资源使用率的信息,并且在接收来自 Amazon ECS 的请求时启动和停止任务。有关更多信息,请参阅 Amazon ECS 容器代理

本页内容: