程序员Docker

docker 正确退出容器的方式

2019-02-01  本文已影响2人  jarhmj

docker自身给我提供了两种退出容器的方式:

  1. docker kill
    命令执行时会直接发出SIGKILL的系统信号,以强行终止容器中程序的运行。类似Linux系统中的kill -9或者是kill -SIGKILL命令,用来发送SIGKILL信号,强行终止进程。
Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER...]

Kill one or more running containers

Options:
  -s, --signal string   Signal to send to the container (default "KILL")
  1. docker stop
    命令执行时,会先向容器中PID为1的进程发送系统信号SIGTERM,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间,或者默认的10秒,会继续发送SIGKILL的系统信号强行kill掉进程。
Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER...]

Stop one or more running containers

Options:
  -t, --time int   Seconds to wait for stop before killing it (default 10)

两者区别:

不难看出两者的区别,kill是直接强制kill掉进程然后退出容器,或者直接发送其他信号然后退出,而stop是可以设置一个延迟的时间,这个时间你可以用来处理一些退出容器前的工作,显然要想优雅的退出容器stop肯定是不二之选。

采坑点:

解决办法:

  1. 如果你的进程自己能处理退出的工作,那么只需让他变成1号进程即可,可以使用exec这个命令来执行你的命令。
  2. 如果不是第一种情况,那么只能写一个脚本(shell,go等都可以)来监听信号,当监听到信号后做出相应的处理。

欢迎大家评论,提供优雅的解决办法,谢谢😘!

上一篇 下一篇

猜你喜欢

热点阅读