Docker关闭钩子或支持正常退出

问题描述 投票:2回答:1

我正在通过ECS运行一个docker容器。启动时,容器会运行一个执行某些特定操作的进程。这些操作可能需要几分钟才能完成。

ECS将在群集中运行多个EC2实例(并且每个实例运行多个容器)。这些容器的启动将根据我们向CloudWatch报告的某些特定指标自动调整。

当我们需要缩小容器时,就会出现问题。我们需要优雅地关闭容器(因为它们将运行该进程),我不希望它在没有完成运行进程的情况下终止容器。

我已经看到,Docker不支持关闭钩子https://github.com/moby/moby/issues/2100

我想这样做的一种方法是缩小编号。应用程序本身的实例,通过跟踪正在运行的实例及其状态。我只是想知道在这方面是否还有其他解决方案/想法?

amazon-web-services docker amazon-ec2
1个回答
1
投票

虽然docker不支持关闭挂钩,但可以使用SIGINTSIGTERM信号进行主要的docker进程。只需定义进程的PID并在entrypoint.sh中使用它:

trap "{ echo Received SIGTERM; kill -s SIGTERM $MAIN_PROCESS_ID; wait $MAIN_PROCESS_ID; }" SIGTERM
trap "{ echo Received SIGINT; kill -s SIGINT $MAIN_PROCESS_ID; wait $MAIN_PROCESS_ID; }" SIGINT
© www.soinside.com 2019 - 2024. All rights reserved.