请在Chrome、Firefox、IE8+等现代浏览器浏览本站。 本博客所有文章为原创,图片不加水印,随意转载,但请注明来源,谢谢!

Docker stop或restart需要等10秒的问题

后端 kxjhwbb 5133℃ 0评论

续上一篇 《Docker+Alpine简单的多进程启动》。

实现了一个docker内2个进程后,发现一个小问题,容器的重启或停止,都需要等10秒,虽然没影响但也很难受。

查了一下原理,大概是停止容器时docker会往进程发送结束指令,如果没有顺利结束,10秒后强行结束。

这种情况下如果用supervisor就可以解决,它可以接受指令,并关闭自己启动了的服务、进程(我没有测试过)。

本着探索精神,还是决定尝试脚本解决,最后使用以下脚本实现:

和原来的其实差不多:

区别在于,新脚本启动后,crond变成了lighttpd的子进程,所以当docker stop的时候,lighttpd可以处理掉自己下面的子进程,顺利退出。

这样,docker stop确实就很快了。但是我不确定这样的形式下crond在Lighttpd出现异常时能否正常的执行计划任务。目前到现在一切正常(我的场景是使用crond跑logrotate的计划任务,切割log文件)

喜欢 (15)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址