docker容器生命周期管理围绕created→running→exited→removed状态转换:start恢复exited容器,stop发sigterm优雅终止,restart原子性停启,rm仅删exited容器(-f可强删),卷需单独清理。

掌握 Docker 容器生命周期管理,关键在于理解每个操作对应的状态转换和实际影响。启动、停止、重启和删除不是孤立命令,而是围绕容器状态(created → running → exited → removed)的精准控制。
启动已创建但未运行的容器
使用 docker start 启动一个处于 exited 状态的容器,不会重新创建,仅恢复运行环境:
- 支持批量启动:
docker start web1 db1 cache1 - 附加输出并阻塞终端(适合调试):
docker start -a web1 - 若容器配置了
--restart=always,系统重启后会自动拉起,但首次仍需手动start
停止正在运行的容器
docker stop 发送 SIGTERM 信号,等待容器内主进程优雅退出,默认超时 10 秒,超时后强制发送 SIGKILL:
- 可自定义等待时间:
docker stop -t 30 app(等待 30 秒) - 停止后容器状态变为
exited,所有进程终止,但文件系统和元数据保留 - 不建议用
kill -9直接杀进程,会跳过清理逻辑,可能导致数据不一致
重启容器:先停再启的原子操作
docker restart 是 stop + start 的组合,适用于配置更新或服务刷新场景:
- 对已停止容器执行
restart,等效于start(无 stop 步骤) - 对运行中容器执行,会触发完整停止流程后再启动,确保状态重置
- 若容器因崩溃反复重启,检查日志:
docker logs --tail 50 --follow app
安全删除容器
docker rm 只能删除已停止的容器;强行删除运行中容器需加 -f:
- 常规删除:
docker rm my-db - 强制删除(含运行中):
docker rm -f my-db - 批量清理所有已退出容器:
docker rm $(docker ps -aq -f status=exited) - 注意:删除容器不删除其挂载的卷(
-v),如需连带清理,额外执行docker volume rm











