Windows 容器入门 - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Windows 容器入门

本教程演示如何在 AWS 管理控制台中使用 Amazon ECS-optimized Windows Server AMI 在 Amazon ECS 上运行 Windows 容器。为 Windows 容器实例创建一个集群,在您的集群中启动一个或多个容器实例,注册一个使用 Windows 容器映像的任务定义,创建一项使用该任务定义的服务,然后查看容器运行的示例网页。

步骤 1:创建 Windows 集群

您可以为 Windows 容器创建新集群。使用 Linux Amazon ECS 优化 AMI 的 Amazon EC2 容器实例无法运行 Windows 容器,反之亦然;因此,最好是通过在单独的集群中运行 Windows 容器实例和 Linux 容器实例来正确地放置任务。在本教程中,您将创建一个名为 windows 的集群,并将一个或多个 Amazon EC2 实例注册到 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. Instance configuation (实例配置) 部分中,完成以下步骤。

    1. 对于 Provisioning model (预配置模式),请选择下列实例类型之一:

      • On-Demand Instance (按需实例) – - 使用按需实例,您只需要按小时支付计算容量费用,无需长期购买或预付款。

      • Spot – 使用 Spot 实例,您可以为空闲的 Amazon EC2 计算容量出价,最多可低至按需价格的 1 折。有关更多信息,请参阅 Spot 实例

        注意

        Spot 实例 可能会中断。我们建议您不要为不能中断的应用程序使用 Spot 实例。有关更多信息,请参阅 Spot 实例中断

    2. 对于 Spot 实例,执行以下操作;否则跳到下一步。

      1. 对于 Spot 实例 allocation strategy (Spot 实例分配策略),选择满足您的需求的策略。有关更多信息,请参阅 Spot 队列分配策略

      2. 对于 Maximum bid price (per instance/hour),指定一个出价。如果出价低于所选实例类型的 Spot 价格,则不会启动 Spot 实例。

    3. 对于 EC2 instance type (EC2 实例类型) 页面,选择您的实例的硬件配置。您选择的实例类型决定了可用于运行您的任务的资源。

    4. 对于 Number of instances (实例数量),选择要在集群中启动的 Amazon EC2 实例的数量。

    5. 对于 EC2 AMI Id,为您的容器实例选择要使用的经 Amazon ECS 优化的 AMI。可用的 AMI 将由您选择的区域和实例类型决定。有关更多信息,请参阅Amazon ECS-optimized AMI

    6. 对于 EBS storage (GiB) (EBS 存储(GiB)),选择容器实例上要用作数据存储的 Amazon EBS 卷的大小。您可增加数据卷的大小,以支持更大的映像和容器存储。

    7. 对于 Key pair (密钥对),选择要用于容器实例进行 RDP 访问的 Amazon EC2 密钥对。如果您未指定密钥对,则无法使用 RDP 连接到容器实例。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EC2 密钥对

  7. Networking 部分中,配置要启动容器实例的 VPC。默认情况下,集群创建向导会创建一个新的 VPC (具有位于不同可用区中的两个子网) 和一个安全组 (在端口 80 上对 Internet 开放)。这是一个适用于 HTTP 访问的基本设置。不过,您可以通过执行以下子步骤来修改这些设置。

    1. 对于 VPC,创建一个新 VPC 或选择现有 VPC。

    2. (可选) 如果您选择创建新 VPC,请为 CIDR Block 选择 VPC 的 CIDR 块。有关更多信息,请参阅 Amazon VPC 用户指南 中的您的 VPC 和子网

    3. 对于 Subnets (子网),选择要用于 VPC 的子网。如果您选择创建新 VPC,则可保留默认设置,也可修改这些设置以满足您的需求。如果选择使用现有 VPC,则在该 VPC 中选择一个或多个要用于集群的子网。

    4. 对于 Security group,选择要附加到集群中的容器实例的安全组。如果您选择创建新的安全组,可指定一个 CIDR 块以允许来自它的入站流量。默认端口 0.0.0.0/0 向 Internet 开放。您也可以选择要在容器实例上开放的一个端口或一系列连续端口。要实现更复杂的安全组规则,您可以选择已创建的现有安全组。

      注意

      您还可以选择在创建集群后创建新的安全组并修改规则。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Windows 实例) 中的适用于 Windows 实例的 Amazon EC2 安全组

    5. Container instance IAM role (容器实例 IAM 角色) 部分中,选择要用于容器实例的 IAM 角色。如果您的账户具有在首次运行向导中为您创建的 ecsInstanceRole,则默认情况下会将其选定。如果您的账户中没有此角色,则可选择创建此角色,也可以选择另一个用于您的容器实例的 IAM 角色。

      重要

      您使用的 IAM 角色必须附加 AmazonEC2ContainerServiceforEC2Role 托管策略,否则您将在集群创建期间收到错误。如果未使用适当的 IAM 权限启动容器实例,则 Amazon ECS 代理不会连接到集群。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色

    6. 如果之前选择了 Spot 实例类型,则 Spot 队列 Role IAM role (Spot 队列角色 IAM 角色) 部分指示会创建一个 IAM 角色 ecsSpotFleetRole

  8. Tags (标签) 部分中,为要与集群关联的每个标签指定键和值。有关更多信息,请参阅标记您的 Amazon ECS 资源

  9. CloudWatch Container Insights 部分中,选择是否为集群启用 Container Insights。有关更多信息,请参阅Amazon ECS CloudWatch Container Insights

  10. 选择 Create

    注意

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

步骤 2:注册 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. Select launch type compatibilities (选择启动类型兼容性) 页面上,选择 EC2Next step (下一步)

    注意

    Fargate 启动类型与 Windows 容器不兼容。

  5. 滚动到页面底部,选择 Configure via JSON (通过 JSON 配置)

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

    { "family": "windows-simple-iis", "containerDefinitions": [ { "name": "windows_sample_app", "image": "microsoft/iis", "cpu": 512, "entryPoint":["powershell", "-Command"], "command":["New-Item -Path C:\\inetpub\\wwwroot\\index.html -ItemType 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>' -Force ; C:\\ServiceMonitor.exe w3svc"], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ], "memory": 768, "essential": true } ] }
  7. 验证您的信息并选择 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

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

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

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

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

  2. Create Service (创建服务) 页面上,输入以下信息,然后选择 Create Service (创建服务)

    • Launch type (启动类型)EC2

    • Cluster (集群):windows

    • Service name (服务名称):windows-simple-iis

    • Service type (服务类型)REPLICA

    • Number of tasks (任务数):1

    • Deployment type (部署类型):滚动更新

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

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

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

步骤 4:查看您的服务

当您的服务在集群中启动任务后,您可以查看服务并在浏览器中打开 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 测试页面