当我将应用程序设置为通过docker-compose up
运行时,在ctrl + c上停止需要几秒钟。但是,如果我运行docker kill ...
,容器会很快停止。在docker-compose up
内通过ctrl + c杀死时,我能做些什么来加速容器关闭?
特别是,当docker-compose说它“优雅地停止”时,它实际意味着什么? docker-compose尝试一些关闭协议,然后只在超时后杀死我的容器?
答案 0 :(得分:2)
当docker-compose说它“优雅地停止”时,它实际意味着什么?
基本上,当您执行Ctrl + C时,您将向前台运行的应用程序发送SIGINT(2)信号。大多数情况下,如果您专注于单容器应用程序,此信号的语义类似于在docker-compose stop
或更基本docker stop
时引发的SIGTERM(15)信号。
docker-compose尝试一些关机协议,然后只在超时后杀死我的容器?
是的,我的想法是正在运行的应用程序可以在退出之前捕获SIGINT和SIGTERM信号并执行一些清理操作。
相反,SIGKILL(9)信号(例如由docker kill
引发)导致进程立即终止。
你可能对这个相关的SO answer感兴趣,我给出了一个关于“捕获”SIGINT和SIGTERM信号的入口点bash脚本的玩具示例(当然不是SIGKILL)。
在docker-compose中通过ctrl + c杀死时,我能做些什么来加速容器关闭?
我会说当你docker stop
左右时,容器退出的时间很大程度上取决于相应图像的实现。但请注意,您可以修改(例如,缩短)提供给容器的时间,以便优雅地停止: