docker容器生命周期命令围绕“创建→运行→暂停→停止→删除”状态转换设计:docker create创建但不启动(created状态),docker start/stop/restart控制启停(running/exited),docker pause/unpause冻结/恢复进程(paused),docker rm清理已停止容器。

Docker 容器生命周期命令的核心是围绕状态转换来设计的,不是孤立操作,而是对应“创建→运行→暂停→停止→删除”这一连贯过程。用对命令的关键,在于理解每个命令触发的状态变化,以及它适用的前提条件。
创建容器但不启动:docker create
适合需要预先配置、后续统一启停的场景,比如批量部署或 CI/CD 流程中分离构建与启动步骤。
- 命令格式:
docker create [选项] 镜像名[:标签] [命令] [参数] - 常用选项:
--name指定名称、-v挂载卷、-e设置环境变量、--restart配置重启策略 - 执行后容器状态为 created,不会占用 CPU 或产生日志,可用
docker ps -a查看 - 示例:
docker create -it --name db-postgres -e POSTGRES_PASSWORD=123 -v /data:/var/lib/postgresql/data postgres:15
启动/停止/重启容器:docker start / stop / restart
这三个命令只作用于已存在的容器(created 或 exited 状态才能 start;running 才能 stop/restart),不涉及镜像拉取或新配置。
-
docker start 容器名或ID:将 stopped 或 created 状态的容器转为 running -
docker stop 容器名或ID:发送 SIGTERM,等待 10 秒(可加-t自定义)后强制 SIGKILL,进入 exited -
docker restart 容器名或ID:等效于先 stop 再 start,常用于配置更新后的服务刷新 - 支持批量操作,如:
docker start web1 web2 db或docker stop $(docker ps -q)
暂停与恢复容器:docker pause / unpause
适用于临时冻结业务而不释放内存资源的场景,比如紧急维护、资源调度或调试时保留现场。
-
docker pause 容器名→ 状态变为 paused,所有进程被 cgroup 冻结,CPU 归零,但内存和网络栈保持不变 -
docker unpause 容器名→ 立即恢复执行,无重启开销,应用感知不到中断(除时间跳变外) - 注意:不适用于使用 systemd 或需要信号响应的服务(如某些 Java 应用),可能影响健康检查逻辑
清理容器:docker rm
删除的是容器实例本身,不是镜像。只有 exited 或 created 状态的容器才能直接删;running 或 paused 需加 -f 强制。
-
docker rm 容器名:安全删除已停止容器 -
docker rm -f 容器名:强制终止并删除(等效于先 stop 再 rm) - 批量清理:
docker rm -f $(docker ps -aq)删除所有容器(慎用) - 补充技巧:
docker container prune可一键清理所有已退出容器,更安全可控











