Ram*_*Ram 3 python amazon-ecs docker
我有一些docker容器,它监听RabbitMQ并处理收到的消息。我有一个代码管道,该代码管道可以在图像提交时启动图像的重建和更新任务。
我的问题是在消息处理期间容器将被突然杀死,有什么方法可以停止容器杀死,直到该过程完成并允许其停止,以便可以自动创建一个新的新容器当前容器使用旧代码处理消息。我的容器内部正在运行python代码。
谢谢
停止任务
停止正在运行的任务。
在
StopTask任务上调用时,将向任务中运行的容器发出等效于docker stop的信息。这将导致SIGTERM和默认的30秒超时,此后将发送SIGKILL,并强制停止容器。如果容器正常处理SIGTERM并在收到它后30秒内退出,则不会发送SIGKILL。注意
可以使用ECS_CONTAINER_STOP_TIMEOUT变量在Amazon ECS容器代理上配置默认的30秒超时。有关更多信息,请参阅Amazon Elastic Container Service开发人员指南中的Amazon ECS容器代理配置。
知道了这一点,您可以在应用程序中添加一个简单的检查以捕获SIGTERM,并做出适当的反应。
Yua*_*kun -4
在 Docker 中实现优雅停止的两种方法:
docker stop当向容器发出命令时,Docker 会SIGTERM向容器内的进程发出信号,并等待 10 秒后再清理容器。
您可以指定 10 秒以外的超时:
docker stop --time 30 <CONTAINER>
Run Code Online (Sandbox Code Playgroud)
您需要确保进程SIGTERM正确处理信号。否则就会被一个SIGKILL信号粗暴地杀死。
默认情况下,该命令向进程docker kill发送信号。SIGKILL但您可以指定要使用的另一个信号:
docker kill --signal SIGQUIT <CONTAINER>
Run Code Online (Sandbox Code Playgroud)
还要确保进程正确处理指定的信号。更糟糕的是docker stop,该docker kill命令没有超时行为。
| 归档时间: |
|
| 查看次数: |
2679 次 |
| 最近记录: |