You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS ECS是否会重启容器内已退出的Java进程?

问题:Java进程终止后,AWS ECS中的对应容器是否会重启?

我有一个Java应用,通过Docker在AWS上运行,其入口点配置如下:

ENTRYPOINT ["java","-jar", "-Xmx600m", "/app.jar"]

该应用部署在AWS ECS中,若Java进程因任意原因终止,对应的容器是否会被重新启动?


回答

容器是否会重启,核心取决于你的ECS部署方式和配置:

1. 以ECS服务(Service)部署

如果Java应用是通过ECS服务运行的,只要服务的期望任务数大于0,容器终止后一定会被重启。ECS服务的核心作用就是维持任务的期望运行数量,不管Java进程是正常退出(退出码0)还是异常崩溃(非0退出码),ECS都会自动启动新容器替换终止的任务,直到任务数量符合期望值。

2. 以独立ECS任务(Task)部署

如果是作为单次执行的独立任务运行,容器是否重启由任务定义中的重启策略决定:

  • Always:无论Java进程的退出码是什么,都会重启容器。
  • OnFailure:仅当Java进程以非0退出码终止(比如崩溃、未捕获异常导致退出)时才重启;正常退出(退出码0)则不重启,这是独立任务的默认策略。
  • Never:不管进程如何终止,都不会重启容器。

额外说明

你的Docker入口点配置中,Java进程是容器的PID 1进程——一旦该进程终止,整个容器会进入停止状态,ECS会依据上述配置判断是否执行重启操作。


内容的提问来源于stack exchange,提问作者HeronAlgoSearch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:50:04