目录
Docker stop、start、restart、kill 命令教程:停止和重启容器
docker stop、start、restart、kill、pause 和 unpause 用于控制容器的运行状态;容器生命周期的完整流程请参见容器生命周期。
语法
docker stop [选项] 容器 [容器...]
docker start [选项] 容器 [容器...]
docker restart [选项] 容器 [容器...]
docker kill [选项] 容器 [容器...]
docker pause 容器 [容器...]
docker unpause 容器 [容器...]
选项
| 命令 | 选项 | 说明 |
|---|---|---|
docker stop | -s, --signal string | 发送给容器的信号 |
docker stop | -t, --timeout int | 等待多少秒后强制结束容器 |
docker start | -a, --attach | 附加到容器的 STDOUT/STDERR,并转发信号 |
docker start | --checkpoint string | 从指定的 checkpoint 恢复 |
docker start | --checkpoint-dir string | 使用自定义的 checkpoint 存储目录 |
docker start | --detach-keys string | 覆盖用于退出附加状态的按键组合 |
docker start | -i, --interactive | 附加容器的 STDIN |
docker restart | -s, --signal string | 发送给容器的信号 |
docker restart | -t, --timeout int | 等待多少秒后强制结束容器 |
docker kill | -s, --signal string | 发送给容器的信号 |
pause 和 unpause 的说明中没有列出其他选项。也可以使用 docker container 子命令形式调用 stop、start、restart、kill 和 pause。
示例
stop 的等待时间和结束状态
$ time docker stop web
web
real 0m 0.50s
user 0m 0.00s
sys 0m 0.01s
$ time docker stop sleeper
sleeper
real 0m 10.44s
user 0m 0.01s
sys 0m 0.01s
$ docker ps -a --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
sleeper Exited (137) 1 second ago
web Exited (0) 12 seconds ago
uses-redis Up 51 seconds
registry Up About a minute
web在 0.50 秒后停止,状态为Exited (0):nginx 收到 SIGTERM 后正常退出。sleeper等待了 10.44 秒,状态为Exited (137):sleep是容器中的 PID 1,没有处理 SIGTERM。Docker 等满默认的 10 秒后改为发送 SIGKILL(137 = 128 + 9)。详见容器生命周期中的 PID 1 说明。docker stop --help中的-t, --timeout可设置等待多少秒后强制结束容器;此示例展示了默认等待后强制结束的区别。docker ps -a会列出已停止的容器,uses-redis和registry仍显示为运行中。
start、restart 和 kill
$ docker start web
web
$ docker restart -t 2 web
web
$ docker kill sleeper
Error response from daemon: cannot kill container: sleeper: container ebcd31ea947204593383614f0fa2b0b9baba719e4858042e8120b3d544468f20 is not running
$ docker start sleeper && docker kill sleeper
sleeper
sleeper
$ docker ps -a --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
sleeper Exited (137) Less than a second ago
web Up 2 seconds
uses-redis Up 54 seconds
registry Up About a minute
docker start启动已停止的web;docker restart -t 2使用 2 秒超时重启它。- 对已停止的容器执行
docker kill sleeper会失败,错误提示容器未运行;先 start 再 kill 则两个命令都会成功。 - kill 后,
sleeper显示为Exited (137),而web显示为Up。
pause 和 unpause
$ docker pause web
web
$ docker ps --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
web Up 2 seconds (Paused)
uses-redis Up 55 seconds
registry Up About a minute
$ docker exec web nginx -v
Error response from daemon: Container web is paused, unpause the container before exec
$ docker unpause web
web
docker pause会暂停容器中的所有进程,状态栏会显示(Paused)。- 暂停期间,
docker exec会失败,错误信息要求先 unpause;docker unpause会解除暂停。
发送信号让 nginx 重新加载
$ docker kill -s HUP web
web
$ docker logs --tail 3 web
2026/10/25 15:30:32 [notice] 1#1: signal 17 (SIGCHLD) received from 22
2026/10/25 15:30:32 [notice] 1#1: worker process 22 exited with code 0
2026/10/25 15:30:32 [notice] 1#1: signal 29 (SIGIO) received
$ docker kill -s HUP web2
web2
$ docker logs web2 2>&1 | grep -E 'SIGHUP|reconfiguring'
2026/10/25 15:31:00 [notice] 1#1: signal 1 (SIGHUP) received, reconfiguring
2026/10/25 15:31:00 [notice] 1#1: reconfiguring
docker kill -s HUP会向容器发送指定信号;这里web2的日志明确显示收到SIGHUP后正在重新加载。docker logs --tail 3限制为显示最近三行;另一个示例将 stderr 合并到 stdout,再使用grep筛选日志。
容器名称不存在
$ docker stop nosuch
Error response from daemon: No such container: nosuch
指定的容器名称不存在时,Docker 会提示 No such container。
相关章节
- 容器生命周期
- docker ps 命令:查看容器状态
- docker exec 命令:在运行中的容器内执行命令
- docker logs 命令:查看容器日志
动手练习
练习:容器 sleeper 已停止。先启动它,再立即强制结束,最后列出所有容器的名称和状态。
答案
docker start sleeper && docker kill sleeper
docker ps -a --format 'table {{.Names}}\t{{.Status}}'
常见问题
为什么 docker stop sleeper 要等约 10 秒?
这次 docker stop sleeper 耗时 10.44 秒,之后状态为 Exited (137);docker stop --help 说明 -t, --timeout 表示等待多少秒后强制结束容器。
docker kill 可以用于已停止的容器吗?
不行。对已停止的 sleeper 执行 docker kill 时,Docker 会提示容器当前未运行;先用 docker start sleeper 启动后才能 kill。
容器 pause 之后还能用 docker exec 吗?
不行。示例中的 docker exec web nginx -v 提示容器已暂停,必须先执行 docker unpause web。
如何让 nginx 重新加载配置而不停止容器?
向容器发送 HUP:docker kill -s HUP web2。日志会显示 SIGHUP received, reconfiguring。
更新于 2026年10月26日