引导启动 Amazon ECS Linux 容器实例以传递数据 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

引导启动 Amazon ECS Linux 容器实例以传递数据

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

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

要在使用 Amazon EC2 启动向导时传递此用户数据,请参阅 启动 Amazon ECS Linux 容器实例

您可以将容器实例配置为在容器代理配置或 Docker 进程守护程序配置中传递数据。

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