Amazon EC2 Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

创建任务定义

您必须先创建任务定义,然后才能在 Amazon ECS 上运行 Docker 容器。

您可以在任务定义中定义多个容器和数据卷。有关任务定义中可用的参数的完整描述,请参阅任务定义参数

创建新的任务定义

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

  2. 从导航栏中,选择要在其中注册任务定义的区域。

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

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

  5. (可选) 如果您有任务定义的 JSON 表示形式,请完成以下步骤:

    1. Create a Task Definition 页面上,滚动到页面底部并选择 Configure via JSON

    2. 将您的任务定义 JSON 粘贴到文本区域并选择 Save

    3. 验证您的信息并选择 Create

  6. Task Definition Name 中,为您的任务定义键入名称。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。

  7. (可选) 对于 Task Role,选择 IAM 角色,该角色可提供权限,允许任务中的容器代表您调用 AWS API。有关更多信息,请参阅任务的 IAM 角色

    注意

    此处仅显示具有 Amazon EC2 Container Service Task Role 信任关系的角色。有关为您的任务创建 IAM 角色的帮助,请参阅为任务创建 IAM 角色和策略

  8. (可选) 对于 Network Mode,选择 Docker 网络模式,供任务中的容器使用。可用网络模式对应于 Docker 运行参考中的网络设置中描述的网络模式。

    默认 Docker 网络模式为 bridge。如果将网络模式设置为 none,则无法在容器定义中指定端口映射,并且任务的容器没有外部连接性。host 网络模式为容器提供了最高联网性能,因为容器使用的是主机网络堆栈而不是由 bridge 模式提供的虚拟化网络堆栈;不过,公开的容器端口将直接映射到相应的主机端口,因此,您无法利用动态主机端口映射或在单个容器实例上运行同一任务的多个实例化(如果使用了端口映射)。

  9. (可选) 对于 Constraint,确定通过这个任务定义创建的任务应如何放置在集群中 (例如,具有特定实例类型或特定自定义属性的任务放置在容器实例中)。有关更多信息,请参阅 Amazon ECS 任务放置约束

  10. 对于您的任务定义中的每个容器,请完成以下步骤。

    1. 选择 Add container

    2. 填写要在您的容器定义中使用的每个必填字段和任何可选字段(Advanced container configuration 菜单提供了更多的容器定义参数)。有关更多信息,请参阅 任务定义参数

    3. 选择 Add,将容器添加到任务定义。

  11. (可选)要为您的任务定义数据卷,请选择 Add volume。有关更多信息,请参阅 在任务中使用数据卷

    1. 对于 Name,键入卷名称。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。

    2. (可选) 对于 Source Path,键入要提供给容器的主机容器实例的路径。如果您将此字段保留为空,Docker 守护程序将为您分配一个主机路径。如果您指定源路径,数据卷将在主机容器实例上的指定位置保留,除非您手动将其删除。如果主机容器实例上不存在源路径,则 Docker 守护程序会创建它。如果该位置不存在,则源路径文件夹的内容将导出至容器。

  12. 选择 Create

任务定义模板

空任务定义模板如下所示。您可以使用此模板创建任务定义,这些任务定义随后可粘贴到控制台 JSON 输入区域或保存到文件并与 AWS CLI --cli-input-json 选项结合使用。有关这些参数的更多信息,请参阅 任务定义参数

Copy
{ "family": "", "taskRoleArn": "", "networkMode": "", "containerDefinitions": [ { "name": "", "image": "", "cpu": 0, "memory": 0, "memoryReservation": 0, "links": [ "" ], "portMappings": [ { "containerPort": 0, "hostPort": 0, "protocol": "" } ], "essential": true, "entryPoint": [ "" ], "command": [ "" ], "environment": [ { "name": "", "value": "" } ], "mountPoints": [ { "sourceVolume": "", "containerPath": "", "readOnly": true } ], "volumesFrom": [ { "sourceContainer": "", "readOnly": true } ], "hostname": "", "user": "", "workingDirectory": "", "disableNetworking": true, "privileged": true, "readonlyRootFilesystem": true, "dnsServers": [ "" ], "dnsSearchDomains": [ "" ], "extraHosts": [ { "hostname": "", "ipAddress": "" } ], "dockerSecurityOptions": [ "" ], "dockerLabels": { "KeyName": "" }, "ulimits": [ { "name": "", "softLimit": 0, "hardLimit": 0 } ], "logConfiguration": { "logDriver": "", "options": { "KeyName": "" } } } ], "placementConstraints": [ { "expression": "", "type": "memberOf" } ], "volumes": [ { "name": "", "host": { "sourcePath": "" } } ] }

请注意,您可以使用以下 AWS CLI 命令生成此任务定义模板。

Copy
aws ecs register-task-definition --generate-cli-skeleton

本页内容: