暂停与停靠在码头工人

ibo*_*odi 7 restart docker pause docker-container

我试图了解命令docker stop ContainerID和之间的区别docker pause ContainerID.根据此页面,它们都用于暂停现有的Docker容器.

Mos*_*ael 19

docker stop和 和有什么区别docker pause

  • docker stop:发送SIGTERM(终止信号),如果需要的话SIGKILL(终止信号)
  • docker pause:发送SIGSTOP(暂停信号)
  • SIGTERM:默认行为是终止进程,但也可以捕获或忽略它。其目的是无论是否优雅地终止该进程,但首先给它一个清理的机会。

  • SIGKILL:唯一的行为是立即终止进程。由于进程无法捕获信号,因此无法进行清理;因此,这是最后手段的信号。

  • SIGSTOP:唯一的行为是暂停进程;该信号无法被捕获或忽略。shell 使用暂停(及其对应的,通过 SIGCONT 恢复)来实现作业控制

何时使用docker stopdocker pause

  • docker stop:当您希望清理内存或删除所有进程的缓存数据时。简而言之,您不再关心容器中的进程,并且可以轻松地杀死它们。
  • docker pause:当你只想暂停容器中的进程时;您不希望他们丢失数据或状态。

例子

考虑一个带有柜台的容器。假设计数器已达到 3000。运行docker stop将导致计数器丢失其值,并且您将无法检索它。docker pause另一方面,使用将保持计数器状态和值。

希望现在清楚了!


Hem*_*ngh 13

docker pause命令将挂起指定容器中的所有进程.在Linux上,它使用cgroups冷冻器.传统上,当暂停进程时,使用SIGSTOP信号,该进程被暂停可观察到

https://docs.docker.com/engine/reference/commandline/pause/

docker stop命令.容器内的主进程将接收SIGTERM,并在宽限期后,SIGKILL.

https://docs.docker.com/engine/reference/commandline/stop/#options

SIGTERM是终止信号.默认行为是终止进程,但也可以捕获或忽略它.目的是优先或不优先地杀死这个过程,但首先要让它有机会进行清理.

SIGKILL是杀戮信号.唯一的行为是立即杀死进程.由于该过程无法捕获信号,因此无法清理,因此这是最后的信号.

SIGSTOP是暂停信号.唯一的行为是暂停这个过程; 信号无法被捕获或忽略.shell使用pausing(及其对应的,通过SIGCONT恢复)来实现作业控制.

  • 如果重新启动该进程,任何被“SIGSTOP”冻结的进程都将被销毁,并且您不能“SIGCONT”它们。重新启动会杀死主根进程,所有其他进程都从该进程下降并重新启动它。如果您_挂起_(或“睡眠”)计算机,进程树将被保留并可以恢复。 (4认同)
  • docker 暂停后,如果我重新启动笔记本电脑,我能继续该过程吗?也许不是,对吧? (3认同)

fab*_*aws 9

除了之前添加的答案

运行docker eventsdocker stop显示事件

  • 杀死(信号 15):其中信号 15 = SIGTERM
  • 停止

running docker eventsafterdocker pause仅显示一个事件

  • 暂停

docker pause在容器暂停时也将保留内存部分> 当容器恢复时使用此内存。docker stop释放容器停止后使用的内存。

该表包含更多详细信息。