Amazon ECS 容器代理配置 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon ECS 容器代理配置

适用于:EC2 实例

Amazon ECS 容器代理支持很多配置选项,其中大多数选项可通过环境变量来设置。

如果容器实例是使用经 Amazon ECS 优化的 AMI 的 Linux 变体启动的,则可以在 /etc/ecs/ecs.config 文件中设置这些环境变量,然后重新启动代理。您还可以在启动时将这些配置变量写入到具有 Amazon EC2 用户数据的容器实例。有关更多信息,请参阅 引导启动 Amazon ECS Linux 容器实例以传递数据

如果容器实例是使用经 Amazon ECS 优化的 AMI 的 Windows 变体启动的,则可以使用 PowerShell SetEnvironmentVariable 命令设置这些环境变量,然后重新启动代理。有关更多信息,请参阅《Amazon EC2 用户指南》中的在启动包含用户数据输入的 EC2 实例时运行命令引导启动 Amazon ECS Windows 容器实例以传递数据

如果要手动启动 Amazon EC2 容器代理(对于没有经 Amazon ECS 优化的 AMI),则可以在用于启动代理的 docker run 命令中使用这些环境变量。将这些变量与语法 --env=VARIABLE_NAME=VARIABLE_VALUE 结合使用。对于敏感信息 (如私有存储库的身份验证凭证),您应该将代理环境变量存储在一个文件中并利用 --env-file path_to_env_file 选项一次性将它们传递完。您可以使用以下命令来添加变量。

sudo systemctl stop ecs sudo vi /etc/ecs/ecs.config # And add the environment variables with VARIABLE_NAME=VARIABLE_VALUE format. sudo systemctl start ecs

使用主机 PID 命名空间运行 Amazon ECS 代理

默认情况下,Amazon ECS 代理使用自己的 PID 命名空间运行。在以下配置中,您可以将 Amazon ECS 代理配置为使用主机 PID 命名空间运行:

  • SELinux 强制模式已启用。

  • Docker 的 SELinux 安全策略设置为 true。

您可以通过在 /etc/ecs/ecs.config 文件中将 ECS_AGENT_PID_NAMESPACE_HOST 环境变量设置为 true 来配置此行为。启用此变量后,ecs-init 将使用主机的 PID 命名空间(--pid=host)启动 Amazon ECS 代理容器,从而允许代理在 SELinux 强制执行环境中正确引导自身。

要启用此功能,请将以下行添加到您的 /etc/ecs/ecs.config 文件:

ECS_AGENT_PID_NAMESPACE_HOST=true

进行此更改后,请重启 Amazon ECS 代理以使更改生效:

sudo systemctl restart ecs

如果启用了 SELinux 强制执行模式并且将 Docker 安全策略设置为 true,即使设置了 ECS_AGENT_PID_NAMESPACE_HOST=true,以下功能也将不起作用。

  • Amazon ECS Exec

  • Amazon EBS 任务附加

  • Service Connect

  • 适用于 Amazon ECS 的 FireLens

可用参数

有关可用的 Amazon ECS 容器代理配置参数的信息,请参阅 GitHub 上的 Amazon ECS 容器代理