kill 1
不起作用:$ sudo docker run -it centos
[root@3752d3a44f10 /]# ps
PID TTY TIME CMD
1 pts/0 00:00:00 bash
15 pts/0 00:00:00 ps
[root@3752d3a44f10 /]# kill 1
[root@3752d3a44f10 /]# kill -9 1
[root@3752d3a44f10 /]# kill -SEGV 1
[root@3752d3a44f10 /]# <-- shell is still running
是否有一种方法可以从容器内部显式终止使用PID 1的进程?怎么样?
#1 楼
PID 1是一种特殊的PID,除非明确创建处理程序,否则它将忽略某些信号。 Docker对此有一些文档:因此,除非经过编码,否则该过程不会在SIGINT或SIGTERM上终止。从此处开始:https://docs.docker.com/engine/reference/run/ #foreground
要终止PID 1,您必须显式声明SIGTERM信号的处理程序,或者在当前版本的Docker中,将
--init
命令中的docker run
标志传递给仪器tini。
评论
非常感谢@edaemon,尤其是提到了我不知道的--init标志!
–西尔万·勒鲁(Sylvain Leroux)
18/12/6在16:30