snippetdockerModerate
How to explicitly kill the process with PID 1 from inside a container?
Viewed 0 times
killthecontainerprocesswithexplicitlyhowpidfrominside
Problem
For demonstration purposes, I would like to kill the process with PID 1 from inside a container. But apparently,
Is there a way to explicitly kill the process with PID 1 from inside a container? How?
kill 1 doesn't work:$ 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 runningIs there a way to explicitly kill the process with PID 1 from inside a container? How?
Solution
PID 1 is a special PID which will ignore certain signals unless handlers are explicitly created. Docker has some documentation on this:
Note: A process running as PID 1 inside a container is treated specially by Linux: it ignores any signal with the default action. So, the process will not terminate on SIGINT or SIGTERM unless it is coded to do so.
From here: https://docs.docker.com/engine/reference/run/#foreground
To kill PID 1 you will have to explicitly declare the handler for the SIGTERM signal or, in current versions of Docker, pass the
Note: A process running as PID 1 inside a container is treated specially by Linux: it ignores any signal with the default action. So, the process will not terminate on SIGINT or SIGTERM unless it is coded to do so.
From here: https://docs.docker.com/engine/reference/run/#foreground
To kill PID 1 you will have to explicitly declare the handler for the SIGTERM signal or, in current versions of Docker, pass the
--init flag in the docker run command to instrument tini.Context
StackExchange DevOps Q#5613, answer score: 15
Revisions (0)
No revisions yet.