本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Windows 容器入门
本教程演示如何在 AWS 管理控制台中使用 Amazon ECS-optimized Windows Server AMI 在 Amazon ECS 上运行 Windows 容器。为 Windows 容器实例创建一个集群,在您的集群中启动一个或多个容器实例,注册一个使用 Windows 容器映像的任务定义,创建一项使用该任务定义的服务,然后查看容器运行的示例网页。有关更多信息,请参阅Windows 容器。
第1步: 创建Windows群集
您可以为 Windows 容器创建新集群。使用 Linux Amazon ECS 优化 AMI 的 Amazon EC2 容器实例无法运行 Windows 容器,反之亦然;因此,最好是通过在单独的集群中运行
Windows 容器实例和 Linux 容器实例来正确地放置任务。在本教程中,您将创建一个名为 windows
的集群,并将一个或多个 Amazon EC2 实例注册到 Windows 容器的集群中。
使用 AWS 管理控制台创建集群
-
在 https://console.amazonaws.cn/ecs/
上打开 Amazon ECS 控制台。 -
在导航窗格中,选择集群。
-
在 Clusters 页面上,选择 Create Cluster。
-
选择 EC2 Windows + Networking,然后选择 Next step。
-
在 Cluster name (集群名称) 中,为集群输入名称(在本示例中,集群的名称是
windows
)。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。 -
在 Instance configuation (实例配置) 部分中,完成以下步骤。
-
对于 Provisioning model (预配置模式),请选择下列实例类型之一:
-
对于 Spot 实例,执行以下操作;否则跳到下一步。
-
对于 Spot 实例 allocation strategy (Spot 实例分配策略),选择满足您的需求的策略。有关更多信息,请参阅 Spot 队列分配策略。
-
对于 Maximum bid price (per instance/hour),指定一个出价。如果出价低于所选实例类型的 Spot 价格,则不会启动 Spot 实例。
-
-
对于 EC2 instance type (EC2 实例类型) 页面,选择您的实例的硬件配置。您选择的实例类型决定了可用于运行您的任务的资源。
-
对于 Number of instances (实例数量),选择要在集群中启动的 Amazon EC2 实例的数量。
-
对于 EC2 AMI Id,为您的容器实例选择要使用的经 Amazon ECS 优化的 AMI。可用的 AMI 将由您选择的区域和实例类型决定。有关更多信息,请参阅Amazon ECS-optimized AMIs。
-
对于 EBS storage (GiB) (EBS 存储(GiB)),选择容器实例上要用作数据存储的 Amazon EBS 卷的大小。您可增加数据卷的大小,以支持更大的映像和容器存储。
-
对于 Key pair (密钥对),选择要用于容器实例进行 RDP 访问的 Amazon EC2 密钥对。如果您未指定密钥对,则无法使用 RDP 连接到容器实例。有关更多信息,请参阅 Amazon EC2 中的 Amazon EC2 用户指南(适用于 Linux 实例) 密钥对。
-
-
在 Networking 部分中,配置要启动容器实例的 VPC。默认情况下,集群创建向导会创建一个新的 VPC (具有位于不同可用区中的两个子网) 和一个安全组 (在端口 80 上对 Internet 开放)。这是一个适用于 HTTP 访问的基本设置。不过,您可以通过执行以下子步骤来修改这些设置。
-
对于 VPC,创建一个新 VPC 或选择现有 VPC。
-
(可选) 如果您选择创建新 VPC,请为 CIDR Block 选择 VPC 的 CIDR 块。有关更多信息,请参阅 您的VPC和子网 在 Amazon VPC 用户指南.
-
对于 Subnets (子网),选择要用于 VPC 的子网。如果您选择创建新 VPC,则可保留默认设置,也可修改这些设置以满足您的需求。如果选择使用现有 VPC,则在该 VPC 中选择一个或多个要用于集群的子网。
-
对于 Security group,选择要附加到集群中的容器实例的安全组。如果您选择创建新的安全组,可指定一个 CIDR 块以允许来自它的入站流量。默认端口 0.0.0.0/0 向 Internet 开放。您也可以选择要在容器实例上开放的一个端口或一系列连续端口。要实现更复杂的安全组规则,您可以选择已创建的现有安全组。
注意 您还可以选择在创建集群后创建新的安全组并修改规则。有关更多信息,请参阅 Amazon EC2 Windows实例的安全组 在 Amazon EC2 用户指南(适用于 Windows 实例).
-
在 Container instance IAM role (容器实例 IAM 角色) 部分中,选择要用于容器实例的 IAM 角色。如果您的帐户有 ecsInstanceRole 在控制台首次运行向导中为您创建的,默认情况下为。如果您的账户中没有此角色,则可选择创建此角色,也可以选择另一个用于您的容器实例的 IAM 角色。
重要 您使用的 IAM 角色必须附加
AmazonEC2ContainerServiceforEC2Role
托管策略,否则您将在集群创建期间收到错误。如果未使用适当的 IAM 权限启动容器实例,则 Amazon ECS 代理不会连接到集群。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色。 -
如果之前选择了 Spot 实例类型,则 Spot 队列 Role IAM role (Spot 队列角色 IAM 角色) 部分指示会创建一个 IAM 角色
ecsSpotFleetRole
。
-
-
在 Tags (标签) 部分中,为要与集群关联的每个标签指定键和值。有关更多信息,请参阅标记您的 Amazon ECS 资源。
-
在 CloudWatch Container Insights 部分中,选择是否为集群启用 Container Insights。有关更多信息,请参阅Amazon ECS CloudWatch Container Insights。
-
选择创建。
注意 将 Windows 容器实例注册到集群最多需要花费 15 分钟的时间。
第2步: 注册Windows任务定义
您必须先注册任务定义,然后才能在 Amazon ECS 集群中运行 Windows 容器。以下任务定义示例在具有 microsoft/iis
容器映像的容器实例的端口 8080 上显示一个简单网页。
使用 AWS 管理控制台注册示例任务定义
-
在 https://console.amazonaws.cn/ecs/
上打开 Amazon ECS 控制台。 -
在导航窗格中,选择 Task Definitions。
-
在 Task Definitions (任务定义) 页面上,选择 Create new Task Definition (创建新任务定义)。
-
在 Select launch type compatibilities (选择启动类型兼容性) 页面上,选择 EC2、Next step (下一步)。
注意 Fargate 启动类型与 Windows 容器不兼容。
-
滚动到页面底部,选择 Configure via JSON (通过 JSON 配置)。
-
将下面的示例任务定义 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 } ] }
-
验证您的信息并选择 Create。
使用 AWS CLI注册示例任务定义
-
创建名为
windows-simple-iis.json
的文件。 -
使用您偏好的文本编辑器打开此文件,并将上面的示例 JSON 添加到此文件,然后保存文件。
-
使用 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步: 使用任务定义创建服务
在注册任务定义后,您可以使用任务定义在集群中放置任务。以下过程使用任务定义创建一个服务并将一个任务放置在集群中。
使用控制台从任务定义创建服务
-
在 Task Definition: windows-simple-iis 注册确认页面上,依次选择 Actions、Create Service。
-
在 Create Service (创建服务) 页面上,输入以下信息,然后选择 Create Service (创建服务)。
-
Launch type (启动类型):
EC2
-
Cluster (集群):windows
-
Service name (服务名称):windows-simple-iis
-
Service type (服务类型):
REPLICA
-
任务数: 1
-
部署类型: 滚动更新
-
使用 AWS CLI 从任务定义创建服务
-
使用 AWS CLI 运行以下命令来创建服务。
aws ecs create-service --cluster
windows
--task-definitionwindows-simple-iis
--desired-count1
--service-namewindows-simple-iis
第4步: 查看您的服务
当您的服务在集群中启动任务后,您可以查看服务并在浏览器中打开 IIS 测试页面以验证容器是否正在运行。
下载容器实例并提取 Windows 容器基础层最多需要花费 15 分钟的时间。
查看您的服务
-
在 https://console.amazonaws.cn/ecs/
上打开 Amazon ECS 控制台。 -
在 Clusters 页面上,选择 windows 集群。
-
在 Services 选项卡上,选择 windows-simple-iis 服务。
-
在 Service: windows-simple-iis 页面上,选择服务中的任务的任务 ID。
-
在 Task 页面上,展开
iis
容器以查看其信息。 -
在容器的 Network bindings 中,您应看到 External Link IP 地址和端口组合链接。选择该链接以在浏览器中打开 IIS 测试页面。