引导启动 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
格式。此格式会将以 cat 和 EOF
开头的行之间的所有内容写入到配置文件。
#!/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