不能使用SIGKILL杀死Docker容器中的pid 1

出于某种原因,我想杀死docker集装箱中的主要Python进程(PID 1)。 但是SIGTERMSIGKILL等terminal信号不工作。 我的意思是,跑kill -SIGKILL 1没有效果。 我怎样才能从容器内部杀死pid 1? 我不想运行docker stop或类似的解决scheme。

根据Docker问题跟踪器以及pid 1s的一般文档状态,您需要专门为信号添加一个处理程序,并从中取消处理。

 signal.signal(signal.SIGINT, exit_gracefully) signal.signal(signal.SIGTERM, exit_gracefully) 

exit_gracefully需要定义并最终调用sys.exit(0)

这种行为是由内核所要求和强制的,因为它不会在其他pid上调用sigaction默认值,这是终止的。

我们需要在Node.js中做类似的事情。