docker stop
和 和有docker kill
什么区别?
Afaik,两者都会停止正在运行的容器。是否docker stop
试图以正确的方式停止容器内运行的进程,同时docker kill
会发送终止信号?如果是这样,如何docker stop
知道如何正确停止正在运行的进程。(因为这因过程而异)
Ste*_*pel 146
是不是 docker stop 试图以正确的方式停止容器内运行的进程,而 docker kill 会发送一个终止信号?
基本上是的,差异很小,但在命令行参考中概述:
因此,stop
尝试通过发送标准POSIX 信号 来触发正常关闭SIGTERM
,而kill
默认情况下只是终止进程(但也允许发送任何其他信号):
SIGTERM 信号被发送到一个进程以请求其终止。与 SIGKILL 信号不同,它可以被进程捕获并解释或忽略。这允许进程在适当时执行良好的终止释放资源和保存状态。应该注意的是,SIGINT 几乎与 SIGTERM 相同。
虽然无论如何都没有强制执行,但通常希望进程能够SIGTERM
优雅地处理并根据其职责做正确的事情 - 由于正常关闭尝试花费的时间比宽限期长,这很容易失败,如果数据完整性是需要考虑的最重要的(例如对于数据库);有关更详细的说明,请参见例如海登少校的SIGTERM 与 SIGKILL:
一旦收到 SIGTERM,应用程序就可以确定它想要做什么。虽然大多数应用程序会清理它们的资源并停止,但有些可能不会。当收到 SIGTERM 时,应用程序可能被配置为做一些完全不同的事情。此外,如果应用程序处于错误状态,例如等待磁盘 I/O,它可能无法对发送的信号采取行动。
小智 16
docker kill
将突然停止主入口点进程/程序
docker stop
会尝试优雅地阻止它(会礼貌地询问:P)
在这两种情况下,文件系统更改都将保留(在停止或终止时),因此如果您docker start <container>
那么它将从那里继续。
归档时间: |
|
查看次数: |
97348 次 |
最近记录: |