docker kill 默认发送sigkill(信号9),直接强制终止容器主进程,不等待、不可捕获,毫秒级完成;而docker stop先发sigterm并默认等待10秒,超时才发sigkill,属优雅关闭。
docker kill 默认就发送 sigkill(信号编号 9),无需额外指定,且会立即终止容器进程,不等待优雅退出。
默认行为就是 SIGKILL
执行 docker kill <container></container> 时,Docker 后台直接向容器主进程(PID 1)发送 SIGKILL。该信号无法被捕获、阻塞或忽略,进程会立刻终止,整个过程通常在毫秒级完成。
- 不需要加
--signal=KILL(虽然合法,但纯属冗余) - 与
docker stop不同:stop先发SIGTERM,等 10 秒再发SIGKILL;kill跳过等待,直送SIGKILL - 适用于僵死、无响应或拒绝停止的容器
确认容器状态再操作
强制终止前建议快速检查容器是否真卡住:
- 用
docker ps查看运行状态和 uptime - 用
docker logs <container> --tail=20</container>看最后日志有无异常 - 用
docker exec -it <container> ps aux</container>查主进程是否还在响应(若 exec 失败,大概率已不可控)
常见使用方式
支持容器名、ID(全/短格式)、甚至正则匹配(需启用 experimental 功能):
-
docker kill my-nginx—— 按名称杀 -
docker kill abc123—— 按短 ID 杀(自动补全) -
docker kill $(docker ps -q -f status=running)—— 批量杀所有运行中容器(慎用)
注意:不是“断开连接”,而是“终止进程”
docker kill 的本质是终结容器内 PID 1 进程,导致容器退出(状态变为 Exited (137))。它不涉及网络断连逻辑,但因进程消失,所有端口监听、TCP 连接会由内核回收,客户端会很快收到 RST 或超时。这不是“断开连接”的主动操作,而是进程消亡后的自然结果。











