

# 使用容器重启策略重启 Amazon ECS 任务中的单个容器
<a name="container-restart-policy"></a>

您可以为任务定义中定义的每个基本容器和非基本容器启用重启策略，以更快地克服暂时性失败并保持任务可用性。为容器启用重启策略后，Amazon ECS 可以在容器退出时重启该容器，而无需替换任务。

默认情况下，容器不会启用重启策略。为容器启用重启策略时，可以指定容器不会重启的退出代码。这些可能是表示成功的退出代码，例如退出代码 `0`，此类退出代码表示不需要重启。您还可以指定容器必须成功运行多长时间后才能尝试重启。有关这些参数的更多信息，请参阅 [重启策略](task_definition_parameters.md#container_definition_restart_policy)。有关指定这些值的任务定义示例，请参阅[在 Amazon ECS 任务定义中指定容器重启策略](container-restart-policy-example.md)。

您可以使用 Amazon ECS 任务元数据端点或 CloudWatch Container Insights 来监控容器重启的次数。有关任务元数据端点的更多信息，请参阅 [Amazon ECS 任务元数据端点版本 4](task-metadata-endpoint-v4.md) 和 [Fargate 上任务的 Amazon ECS 任务元数据端点版本 4](task-metadata-endpoint-v4-fargate.md)。有关适用于 Amazon ECS 的 Container Insights 指标的更多信息，请参阅《Amazon CloudWatch 用户指南》中的 [Amazon ECS Container Insights metrics](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html)**。

在 Fargate、Amazon EC2 实例以及使用 Amazon ECS Anywhere 的外部实例上托管的任务都支持容器重启策略。

## 注意事项
<a name="container-restart-policy-considerations"></a>

为容器启用重启策略时应注意以下几个方面：
+ Fargate 上的 Windows 容器不支持重启策略。
+ 对于 Amazon EC2 实例上托管的任务，此功能要求您具有版本 `1.86.0` 或更高版本的容器代理。但是，我们建议使用最新的容器代理版本。有关如何检查您的代理版本并更新到最新版本的信息，请参阅[更新 Amazon ECS 容器代理](ecs-agent-update.md)。
+ 如果在 `bridge` 网络模式下使用 EC2，则在重启 FireLens 日志路由器容器（容器定义中包含 `firelensConfiguration` 对象的容器）后，应用程序容器中的 `FLUENT_HOST` 环境变量可能会变得不准确。这是因为 `FLUENT_HOST` 是一个动态 IP 地址，重启后就会改变。地址改变后，直接从应用程序容器登录到 `FLUENT_HOST` IP 地址可能会失败。有关 `FLUENT_HOST`的更多信息，请参阅[配置 Amazon ECS 日志，以实现高吞吐量](firelens-docker-buffer-limit.md)。
+ Amazon ECS 代理处理容器重启策略。如果由于某些意外原因导致 Amazon ECS 代理失败或不再运行，则容器将不会重启。
+  策略中定义的重启尝试期决定了在 Amazon ECS 重启容器之前容器必须运行的时间段（以秒为单位）。