docker stop container_id
与docker pause container_id
都可以起到停止容器运行的目的但其中有一些不同。
docker pause
docker pause
命令暂停指定容器中的所有进程。在 Linux 上,这使用 cgroups freezer。传统上,当挂起一个进程时,会使用 SIGSTOP 信号,这个信号可以被被挂起的进程观察到
https://docs.docker.com/engine/reference/commandline/pause/
docker stop
docker stop
命令。容器内的主进程会收到 SIGTERM,在一个宽限期后,会收到 SIGKILL。
https://docs.docker.com/engine/reference/commandline/stop/#options
补充
SIGTERM
是终止信号。默认行为是终止进程,但它也可以被捕获或忽略。目的是要终止进程,无论是否优雅,但首先要让它有机会进行清理。
SIGKILL
是终止信号。唯一的行为是立即终止进程。由于进程无法捕获信号,因此无法清除,因此这是最后的信号。
SIGSTOP
是暂停信号。唯一的行为是暂停进程;信号不能被捕获或忽略。Shell 使用暂停(及其对应项,通过 SIGCONT 恢复)来实现作业控制。