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

Windows 容器入门

本教程演示如何手动在 Amazon ECS 上运行 Windows 容器。为 Windows 容器实例创建一个群集,在此群集中启动一个或多个容器实例,注册一个使用 Windows 容器映像的任务定义,创建一个使用该任务定义的服务,然后查看容器运行的示例网页。

步骤 1:创建 Windows 群集

您应为 Windows 容器创建新群集。Linux 容器实例无法运行 Windows 容器,反之亦然,因此最好是通过在单独的群集中运行 Windows 容器实例和 Linux 容器实例来正确地放置任务。在本教程中,您为 Windows 容器创建一个名为 windows 的群集。

使用 AWS 管理控制台创建群集

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 在导航窗格中,选择 Clusters

  3. Clusters 页面上,选择 Create Cluster

  4. 选择 EC2 Windows + Networking,然后选择 Next step

  5. Cluster name 中,为群集输入名称 (在本示例中,群集的名称是 windows)。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。

  6. 依次选择 Create an empty clusterCreate

使用 AWS CLI 创建群集

  • 您可以使用下面的命令通过 AWS CLI 创建群集:

    aws ecs create-cluster --cluster-name windows

步骤 2:在群集中启动 Windows 容器实例

您可以使用 AWS 管理控制台启动 Windows 容器实例,如本主题中所述。开始之前,请确保您已完成Amazon ECS 的设置中的步骤。启动实例之后,您可以使用实例来运行任务。

启动 Windows 容器实例

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 从导航栏中,选择要使用的区域。

  3. 从控制台控制面板中,选择 Launch Instance

  4. Choose an Amazon Machine Image (AMI) 页面上,选择 Community AMIs

  5. Search community AMIs 字段中键入 ECS_Optimized 并按 Enter 键。选择 Windows_Server-2016-English-Full-ECS_Optimized-2018.05.17 AMI 旁边的 Select

    The current Amazon ECS-optimized Windows AMI IDs by region are listed below for reference.

    Region AMI ID
  6. Choose an Instance Type (选择实例类型) 页面上,您可以选择实例的硬件配置。默认情况下会选择 t2.micro 实例类型。您选择的实例类型决定了可用于运行您的任务的资源。

  7. 选择 Next: Configure Instance Details

  8. Configure Instance Details 页面上,根据是否允许从公共 Internet 访问实例来设置 Auto-assign Public IP 复选框。如果您的实例应可从 Internet 进行访问,请验证 Auto-assign Public IP 字段是否已设置为 Enable。如果不应可从 Internet 访问您的实例,请选择 Disable

    注意

    Container instances need external network access to communicate with the Amazon ECS service endpoint, so if your container instances do not have public IP addresses, then they must use network address translation (NAT) to provide this access. For more information, see NAT Gateways in the Amazon VPC 用户指南 and HTTP 代理配置 in this guide. For more information, see Tutorial: Creating a VPC with Public and Private Subnets for Your Clusters

  9. Configure Instance Details 页面上,选择您在ecsInstanceRole中为您的容器实例创建的 IAM roleAmazon ECS 的设置 值。

    重要

    如果您未使用适当的 IAM 权限启动容器实例,则您的 Amazon ECS 代理将不会连接到群集。有关更多信息,请参阅 Amazon ECS 容器实例 IAM 角色

  10. 展开 Advanced Details 部分,并将提供的用户数据 PowerShell 脚本粘贴到 User data 字段。默认情况下,此脚本将容器实例注册到您之前创建的 windows 群集。要在另一个群集而非 windows 中启动,可将以下脚本中的红色文本替换为您的群集名称。

    注意

    启用任务的 IAM 角色需要使用 -EnableTaskIAMRole 选项。有关更多信息,请参阅 任务的 Windows IAM 角色

    <powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole </powershell>
  11. 选择 Next: Add Storage

  12. Add Storage 页面上,为您的容器实例配置存储。Windows OS 和容器映像非常大 (对于 Windows 服务器核心基础层来说,约为 9 GiB),仅几个映像和容器就会快速达到 Amazon ECS-optimized Windows AMI 的默认 50 GiB 卷大小。更大的根卷大小(例如,200 GiB)允许实例上具有更多的容器和映像。

    您可以选择增大或减小实例的卷大小以满足您的应用程序需求。

  13. 选择 Review and Launch

  14. Review Instance Launch (查看实例启动) 页面上的 Security Groups (安全组) 下,您将看到向导为您创建并选择了安全组。默认情况下,您应通过端口 3389 来实现 RDP 连接。如果您希望容器接收来自 Internet 的入站流量,则也需要开放这些端口。

    1. 选择 Edit security groups

    2. Configure Security Group 页面上,确保选择 Create a new security group 选项。

    3. 为容器可能需要的任何其他端口添加规则(在本演练中,示例任务定义稍后将使用端口 8080,因此您应对 Anywhere 开放此端口),并选择 Review and Launch

  15. Review Instance Launch 页面上,选择 Launch

  16. Select an existing key pair or create a new key pair 对话框中,选择 Choose an existing key pair,然后选择您在开始设置时创建的密钥对。

    准备好后,选中确认字段,然后选择 Launch Instances

  17. 确认页面会让您知道自己的实例已启动。选择 View Instances 以关闭确认页面并返回控制台。

  18. Instances (实例) 屏幕上,您可以查看您实例的状态。启动实例只需很短的时间。启动实例时,其初始状态为 pending。实例启动后,其状态变为 running,并且会收到一个公有 DNS 名称。(如果 Public DNS 列已隐藏,请选择 Show/Hide 图标,然后选择 Public DNS。)

  19. 在启动实例后,您可以在 Amazon ECS 控制台中查看群集,了解容器实例是否已注册到该群集。

    注意

    将 Windows 容器实例注册到群集最多需要花费 15 分钟的时间。

步骤 3:注册 Windows 任务定义

您必须先注册任务定义,然后才能在 Amazon ECS 群集中运行 Windows 容器。以下任务定义示例在具有 microsoft/iis 容器映像的容器实例的端口 8080 上显示一个简单网页。

使用 AWS 管理控制台注册示例任务定义

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 在导航窗格中,选择 Task Definitions

  3. Task Definitions 页面上,选择 Create new Task Definition

  4. 滚动到页面底部,选择 Configure via JSON

  5. 将下面的示例任务定义 JSON 粘贴到文本区域 (替换预填充的 JSON),然后选择 Save

    { "family": "windows-simple-iis", "containerDefinitions": [ { "name": "windows_sample_app", "image": "microsoft/iis", "cpu": 100, "entryPoint":["powershell", "-Command"], "command":["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ], "memory": 500, "essential": true } ] }
  6. 验证您的信息并选择 Create

使用 AWS CLI 注册示例任务定义

  1. 创建名为 windows-simple-iis.json 的文件。

  2. 使用您偏好的文本编辑器打开此文件,并将上面的示例 JSON 添加到此文件,然后保存文件。

  3. 使用 AWS CLI 运行以下命令以将任务定义注册到 Amazon ECS。

    注意

    确保将 AWS CLI 配置为使用 Windows 群集所在的区域,或者将 --region your_cluster_region 选项添加到命令。

    aws ecs register-task-definition --cli-input-json file://windows-simple-iis.json

步骤 4:使用您的任务定义创建服务

在注册任务定义后,您可以使用任务定义在群集中放置任务。以下过程使用任务定义创建一个服务并将一个任务放置在群集中。

使用 AWS 管理控制台从任务定义创建服务

  1. Task Definition: windows-simple-iis 注册确认页面上,依次选择 ActionsCreate Service

  2. Create Service 页面上,输入以下信息,然后选择 Create Service

    • Cluster: 窗口

    • Number of tasks: 1

    • Service name: windows-simple-iis

使用 AWS CLI 从任务定义创建服务

  • 使用 AWS CLI 运行以下命令来创建服务。

    aws ecs create-service --cluster windows --task-definition windows-simple-iis --desired-count 1 --service-name windows-simple-iis

步骤 5:查看您的服务

当您的服务在群集中启动任务后,您可以查看服务并在浏览器中打开 IIS 测试页面以验证容器是否正在运行。

注意

下载容器实例并提取 Windows 容器基础层最多需要花费 15 分钟的时间。

查看您的服务

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. Clusters 页面上,选择 windows 群集。

  3. Services 选项卡上,选择 windows-simple-iis 服务。

  4. Service: windows-simple-iis 页面上,选择服务中的任务的任务 ID。

  5. Task 页面上,展开 iis 容器以查看其信息。

  6. 在容器的 Network bindings 中,您应看到 External Link IP 地址和端口组合链接。选择该链接以在浏览器中打开 IIS 测试页面。

     Windows 简单 IIS 测试页面