使用 Amazon EC2 用户数据引导启动容器实例 - Amazon Elastic Container Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon EC2 用户数据引导启动容器实例

在启动 Amazon EC2 实例时,您可以选择将用户数据传递到实例。数据可以用于执行常见的自动配置任务,甚至用于在实例启动时运行脚本。对于 Amazon ECS,最常见的用户数据使用案例是将配置信息传递到 Docker 进程守护程序和 Amazon ECS 容器实例。

您可以将多类用户数据传递到 Amazon EC2,其中包括云 boothook、Shell 脚本和 cloud-init 指令。有关这些和其他格式类型的更多信息,请参阅 Cloud-Init 文档

您可以在使用 Amazon EC2 启动向导时传递此用户数据。有关更多信息,请参阅 启动 Amazon ECS Linux 容器实例

Amazon ECS 容器代理

当容器代理启动时,经 Amazon ECS 优化的 AMI的 Linux 变体将在 /etc/ecs/ecs.config 文件中查找代理配置数据。您可以在启动时使用 Amazon EC2 用户数据指定此配置数据。有关可用 Amazon ECS 容器代理配置变量的更多信息,请参阅 Amazon ECS 容器代理配置

若要仅设置一个代理配置变量(如集群名称),请使用 echo 将该变量复制到配置文件:

#!/bin/bash echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config

如果您有多个变量要写入到 /etc/ecs/ecs.config,请使用以下 heredoc 格式。此格式会将以 catEOF 开头的行之间的所有内容写入到配置文件。

#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}} ECS_LOGLEVEL=debug ECS_WARM_POOLS_CHECK=true EOF

要设置自定义实例属性,请设置 ECS_INSTANCE_ATTRIBUTES 环境变量。

#!/bin/bash cat <<'EOF' >> ecs.config ECS_INSTANCE_ATTRIBUTES={"envtype":"prod"} EOF

Docker 进程守护程序

您可以使用 Amazon EC2 用户数据指定 Docker 守护进程配置信息。有关配置选项的更多信息,请参阅 Docker 进程守护程序文档

在以下示例中,自定义选项添加到 Docker 进程守护程序配置文件中,/etc/docker/daemon.json,然后在启动实例时在用户数据中指定。

#!/bin/bash cat <<EOF >/etc/docker/daemon.json {"debug": true} EOF systemctl restart docker --no-block

在以下示例中,自定义选项添加到 Docker 进程守护程序配置文件中,/etc/docker/daemon.json,然后在启动实例时在用户数据中指定。此示例说明如何在 Docker 进程守护程序配置文件中禁用 docker-proxy。

#!/bin/bash cat <<EOF >/etc/docker/daemon.json {"userland-proxy": false} EOF systemctl restart docker --no-block