从里面停止docker集装箱

我有一个docker容器内运行的cronjob检查所有服务是否按预期运行。 如果这个cronjob确定有问题,我想停止docker集装箱(从内部…)

不幸的是exit只是停止我的cronjob脚本

基本上,你需要PID 1退出来停止容器。

我最初认为kill -s SIGKILL 1可以工作,但是PID 1是受保护的,所以不会。

正如@Thomasleveil所build议的那样,您可以向PID 1脚本添加trap "exit" SIGINT SIGTERM等代码,这意味着发送kill -s SIGINT 1时进程将退出。 我稍微偏好这个方法(你直接杀死subprocess),因为它给父进程一个清理的机会,父进程也应该能够在没有awk的情况下findsubprocess的PID。

但是,如果你正在运行多个进程,你应该考虑使用像supervisord或runit的东西。

我试图杀死进程1,但没有成功。

shutdown -h nowshutdown -h now试一试@ zero323的注释。 它工作正常(对不起,我不能直接投票,因为它不在答案列表中)。