You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker kill与docker exec kill --1的差异及容器重启行为疑问

Docker容器两种终止PID 1方式的重启行为差异解析

核心差异来自Docker守护进程(dockerd)对容器终止原因的判定逻辑:

  • docker kill的行为:
    这个命令是直接通过Docker API向dockerd发送终止指令,dockerd会主动将容器标记为「用户主动停止」的状态。对于--restart unless-stopped策略来说,用户主动触发的停止操作属于策略中「不重启」的范畴,因此容器停止后不会重启。

  • docker exec内部杀PID 1的行为:
    这种方式是在容器内部进程空间里终止PID 1,dockerd无法感知到这是用户主动发起的操作,只会检测到容器的主进程(PID 1)意外退出。根据unless-stopped的规则,容器主进程意外崩溃/退出不属于「用户主动停止」的场景,因此dockerd会执行重启策略,让容器重新启动。

关于你提到的文档误解:always和unless-stopped的重启规则核心是区分「用户主动停止」和「意外退出」——只有前者会触发unless-stopped的不重启逻辑,后者无论终止方式是什么(哪怕是手动在内部杀PID 1),都会被dockerd判定为异常退出,进而触发重启。

内容的提问来源于stack exchange,提问作者xihare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:58:09