Amazon Elastic Container Service (Amazon ECS) 是用于在可扩展群集上运行 Docker 应用程序的 Amazon Web Service。在本教程中,您将了解如何在负载均衡器后面的 Amazon ECS 集群上运行支持 Docker 的示例应用程序,对该示例应用程序进行测试,然后删除您的资源以免产生费用。

在本教程中完成的所有操作均符合免费套餐条件。

管理 AWS 资源

登录控制台

Amazon ECS 首次运行向导将引导您创建集群并启动示例 Web 应用程序。在此步骤中,您将进入 Amazon ECS 控制台并启动该向导。



b. 使用 Amazon ECS,您可以选择使用 Amazon Elastic Container Registry (Amazon ECR) 创建映像存储库,并向其推送一个映像作为首次运行向导的一部分(参见右侧的屏幕截图)。该功能目前在部分区域可用。 

  • 如果没有 Amazon ECR 选项,请跳至步骤 2。
  • 如果有 Amazon ECR 选项,则取消选中 Deploy a sample application onto an Amazon ECS Cluster 旁边的复选框,然后选择 Continue
deploy-docker-container-1

(单击以缩放)

deploy-docker-container-1

任务定义类似于应用程序的蓝图。在此步骤中,您将指定一个任务定义,以便 Amazon ECS 分辨出将哪个 Docker 映像用于容器、该任务将使用多少个容器以及每个容器的资源分配情况。


任务定义预加载了默认的配置值。

  • 查看默认值并选择 Next Step

如果您希望修改配置或想要了解更多内容,请参阅任务定义参数

deploy-docker-container-2

(单击以缩放)

deploy-docker-container-2

您现已创建了任务定义,接下来是配置 Amazon ECS 服务。服务可启动并维护集群中任务定义的副本。例如,通过将某个应用程序作为服务来运行,Amazon ECS 将自动恢复任何已停止的任务并维持您所指定的副本数。


a. 配置服务选项:

  • Service Name:默认的 sample-webapp 是一款由 AWS 提供的基于 Web 的“Hello World”应用程序。这意味着它可无限期运行,因此,通过将其作为服务来运行,如果任务的运行状况不佳或意外终止,该应用程序将重新启动。
  • Desired number of tasks:若不超出 AWS 免费套餐的范围,请保留默认值 1。此操作将为您的任务创建一个副本。
deploy-docker-container-3

(单击以缩放)

deploy-docker-container-3

b. Elastic Load Balancing:您可以选择将负载均衡器与您的服务配合使用。Amazon ECS 可以创建 Elastic Load Balancing (ELB) 负载均衡器,以在启动任务的各个容器实例间分配流量。

  • Container name: host port:选择 Simple-app:80
  • 为示例应用程序设置 ELB listener protocol、ELB listener port 和 ELB health check 的默认值。有关负载均衡配置的更多信息,请参阅 Service Load Balancing
deploy-docker-container-3b

(单击以缩放)

deploy-docker-container-3b

c. 将负载均衡器挂载到 Amazon ECS 服务之前,必须先创建服务要使用的 Identity and Access Management (IAM) 角色。此操作将允许 Amazon ECS 调用 Amazon EC2 和 Elastic Load Balancing API,以在负载均衡器中注册和取消注册实例。

  • 如果您还没有服务 IAM 角色,Amazon ECS 将创建一个名为 ecsServiceRole 的角色。
  • 如果您有现有的 Amazon ECS 服务角色,请从下拉菜单中选择该角色。
deploy-docker-container-3c

(单击以缩放)

deploy-docker-container-3c

d. 检查设置并选择 Next Step

deploy-docker-container-3d

(单击以缩放)

deploy-docker-container-3d

集群上运行 Amazon ECS 任务,该集群是运行 Amazon ECS 容器代理的容器实例集合。在此步骤中,您将配置集群、检查安全设置并设置 IAM 角色。


a. 按照以下配置设置执行操作:

  • Cluster name:输入 sample-cluster
  • EC2 instance type:默认的 t2.micro 实例类型可确保您不超出免费套餐的范围。CPU 和内存资源越多的实例类型可以处理的任务就越多。有关不同实例类型的更多信息,请参阅 Amazon EC2 实例类型
  • Number of instances:保留默认值 1 以启动一个要放置任务的集群中启动的 Amazon EC2 实例。集群中的实例越多,可在其上放置的任务就越多。
  • Key pair:稍后通过 SSH 连接到实例时需要密钥对。您可通过选择 None – unable to SSH、选择现有密钥对或在 Amazon EC2 控制台中创建一个密钥对以继续操作。
deploy-docker-container-5a

(单击以缩放)

deploy-docker-container-5a

b.(可选)安全组:默认值 (Anywhere) 可允许从整个 Internet 进行访问。您还可以选择 CIDR 块以限制对实例的访问。

deploy-docker-container-5b

(单击以缩放)

deploy-docker-container-5b

c. 容器实例 IAM 角色:

  • 如果您没有 IAM 角色,Amazon ECS 向导将会为您创建一个。
  • 如果您有现有的容器实例 IAM 角色,请从下拉菜单中选择该角色。
deploy-docker-container-5c

(单击以缩放)

deploy-docker-container-5c

d. 选择 Review and Launch

deploy-docker-container-5d

(单击以缩放)

deploy-docker-container-5d

在上述步骤中,您配置了任务定义(类似于应用程序蓝图)、Amazon ECS 服务(可启动并维护任务定义的副本)和集群(是运行容器代理的容器实例集合)。在此步骤中,您将检查、启动和查看您所创建的资源。


a. 在启动之前,您有最后一次机会来检查任务定义、任务配置和集群配置。

  • 选择 Launch instance & run service
deploy-docker-container-6

(单击以缩放)

deploy-docker-container-6

b. 您此时位于 Launch Status 页面上,该页面将显示启动状态并描述了过程的每一步。

  • 启动完成后,选择 View service
deploy-docker-container-7

(单击以缩放)

deploy-docker-container-7

在此步骤中,您可通过将您的浏览器指向负载均衡器 DNS 名称来验证示例应用程序是否已启动并处于运行状态。


a. 在“sample-webapp”页面上,单击您的负载均衡器名称。

deploy-docker-container-10

(单击以缩放)

deploy-docker-container-10

b. 现在将测试该示例应用程序:

  • 复制 ELB DNS 名称。
  • 将其粘贴到新的浏览器窗口中。
  • 按键盘上的 Enter 键以查看示例应用程序(在本示例中为静态网页)。
deploy-docker-container-12a

(单击以缩放)

deploy-docker-container-12a

在本教程中,您启动了三种资源:一个 Amazon ECS 集群、一个 Amazon EC2 实例和一个负载均衡器。在此步骤中,您将清除所有资源以免产生不必要的费用。


a. 重新导航至 Amazon ECS 控制台页面

  • 单击集群名称 (sample-cluster)。
deploy-docker-container-13

(单击以缩放)

deploy-docker-container-13

b. 选中 sample-webapp 旁边的复选框,然后单击 Update

deploy-docker-container-15

(单击以缩放)

deploy-docker-container-15

c. 为确保您不会意外删除带有活动任务的服务,您需要在 Amazon ECS 删除某个服务之前终止所有任务。 

  • 将任务数设置为 0,然后选择 Update Service
  • 更新服务之后,选择 Delete
deploy-docker-container-14

(单击以缩放)

deploy-docker-container-14

d. 删除通过集群启动的 Amazon EC2 实例:

  • 进入 Amazon EC2 控制台
  • 在左侧窗格中,选择 Instances
  • 选中名为 ECS Instance – EC2ContainerService-default 的实例旁边的复选框。
  • 依次选择 Actions > Instance State > Terminate

 

 

deploy-docker-container-17

(单击以缩放)

deploy-docker-container-17

e. 删除负载均衡器:

  • 在左侧窗格中,选择 Load Balancers
  • 选中您为服务创建的负载均衡器旁边的复选框(应以 EC2Contai-EcsElast 开头)。
  • 右键单击并选择 Delete

 

deploy-docker-container-19a

(单击以缩放)

deploy-docker-container-19a

恭喜您!您已了解如何在 Amazon Elastic Container Service (Amazon ECS) 中配置、部署和删除支持 Docker 的应用程序。Amazon ECS 是一个可高度扩展的高性能容器管理服务,它支持 Docker 容器,并允许您在 Amazon EC2 实例的托管集群上轻松地运行应用程序。

现在,您已了解如何将支持 Docker 的应用程序部署到 Amazon ECS,您可以进入下一个教程,了解如何创建 Docker 注册表以存储容器映像。您将构建 Docker 映像,将其推送至存储库,然后用其在 Amazon ECS 上部署应用程序。

创建 Docker 注册表