加速docker-compose shutdown

时间:2018-05-25 17:57:55

标签: docker-compose

当我将应用程序设置为通过docker-compose up运行时,在ctrl + c上停止需要几秒钟。但是,如果我运行docker kill ...,容器会很快停止。在docker-compose up内通过ctrl + c杀死时,我能做些什么来加速容器关闭?

特别是,当docker-compose说它“优雅地停止”时,它实际意味着什么? docker-compose尝试一些关闭协议,然后只在超时后杀死我的容器?

1 个答案:

答案 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左右时,容器退出的时间很大程度上取决于相应图像的实现。但请注意,您可以修改(例如,缩短)提供给容器的时间,以便优雅地停止:

  • docker stop -t TIMEOUT (doc)
  • docker-compose stop -t TIMEOUT (doc)