github编辑

5.3 终止

本节将介绍如何终止一个运行中的容器,以及几种不同的终止方式及其区别。

5.3.1 终止方式概述

终止容器有三种方式:

方式
命令
说明

优雅停止

docker stop

先发 SIGTERM,超时后发 SIGKILL

强制停止

docker kill

直接发 SIGKILL

自动终止

-

容器主进程退出时自动停止


5.3.2 docker stop:推荐

docker stop 基本用法

$ docker stop 容器名或ID

工作原理

spinner

自定义超时时间

## 等待 30 秒后强制终止

$ docker stop -t 30 mycontainer

## 立即发送 SIGKILL(相当于 docker kill)

$ docker stop -t 0 mycontainer

停止多个容器


5.3.3 docker kill

基本用法

与 stop 的区别

命令
信号
使用场景

docker stop

SIGTERM → SIGKILL

正常停止,让应用优雅退出

docker kill

SIGKILL

应用无响应,强制终止

发送自定义信号


5.3.4 容器自动终止

容器的生命周期与主进程绑定。主进程退出时,容器自动停止:


5.3.5 查看已停止的容器

STATUS 字段说明

状态
说明

Up X minutes

运行中

Exited (0)

正常退出 (退出码 0)

Exited (1)

异常退出 (非零退出码)

Exited (137)

被 SIGKILL 终止 (128 + 9)

Exited (143)

被 SIGTERM 终止 (128 + 15)


5.3.6 重新启动容器

启动已停止的容器

重启运行中的容器


5.3.7 生命周期状态图

spinner

5.3.8 批量操作

停止所有容器

删除所有已停止的容器

停止并删除所有容器


5.3.9 常见问题

Q:容器停止很慢

原因:应用没有正确处理 SIGTERM 信号,需要等待超时后强制终止。

解决方案:

  1. 在应用中正确处理 SIGTERM

  2. 使用 docker stop -t 0 立即终止

  3. 检查 Dockerfile 中的 STOPSIGNAL 配置

Q:如何让容器优雅退出

确保容器主进程正确处理信号:

Q:容器无法停止


最后更新于