For demonstration purposes, I would like to kill the process with PID 1 from inside a container. But apparently, 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 running

Is there a way to explicitly kill the process with PID 1 from inside a container? How?

New contributor
Sylvain Leroux is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
up vote 3 down vote accepted

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 --init flag in the docker run command to instrument tini.

New contributor
edaemon is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
  • Thank you very much @edaemon, especially for having mentioned the --init flag I wasn't aware of! – Sylvain Leroux Dec 6 at 16:30

Your Answer

Sylvain Leroux is a new contributor. Be nice, and check out our Code of Conduct.

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.