插件窝 干货文章 docker容器的状态有哪几种

docker容器的状态有哪几种

容器 Docker 状态 container 566    来源:    2025-05-04

Docker 容器的状态主要有以下几种,每种状态反映了容器在生命周期中的不同阶段:


1. Created(已创建)

  • 描述:容器已被创建(通过 docker createdocker run 命令),但尚未启动。
  • 触发操作:显式创建容器但未运行,或配置了 --restart 策略但尚未满足启动条件。
  • 示例命令: bash docker create --name my_container nginx

2. Running(运行中)

  • 描述:容器正在运行,进程处于活动状态。
  • 关键点
    • 可通过 docker startdocker run 进入此状态。
    • 若容器内主进程崩溃或手动停止,状态会变更。
  • 示例命令: bash docker start my_container

3. Paused(已暂停)

  • 描述:容器进程被临时冻结(通过 docker pause),但未释放资源。
  • 原理:利用 Linux 的 cgroups 冻结进程。
  • 恢复:使用 docker unpause 重新运行。
  • 示例命令: bash docker pause my_container

4. Restarting(重启中)

  • 描述:容器正在尝试重新启动(通常因配置了 --restart 策略)。
  • 常见场景
    • 容器进程退出后根据策略自动重启(如 --restart=on-failure)。
    • 可能因持续崩溃导致频繁重启(需检查日志)。

5. Exited(已退出)

  • 描述:容器内主进程已终止。
  • 可能原因
    • 正常退出(进程完成,如运行一次性任务)。
    • 异常退出(错误或手动停止 docker stop)。
  • 后续操作
    • 查看日志:docker logs my_container
    • 重新启动:docker start my_container
    • 删除容器:docker rm my_container

6. Dead(死亡)

  • 描述:容器因严重错误或手动移除失败而无法恢复。
  • 常见情况
    • 底层驱动故障(如存储驱动崩溃)。
    • 强制移除后残留的不可用状态。
  • 处理建议:需手动清理残留资源。

状态查看方法

  • 命令bash docker ps -a # 查看所有容器及其状态 docker inspect -f '{{.State.Status}}' my_container # 检查特定容器状态
  • 输出示例CREATED | RUNNING | PAUSED | RESTARTING | EXITED | DEAD

状态转换示意图

Created → Running ↔ Paused
   ↑       ↓  ↓
   └── Restarting
         ↓
      Exited → Dead

常见问题

  • Q:Exited (0)Exited (非0) 的区别?

    • 0 表示正常退出,非零值为错误代码(如 137 表示被 SIGKILL 终止)。
  • Q:如何避免容器频繁重启?

    • 检查日志:docker logs --tail=100 my_container
    • 调整重启策略:docker update --restart=no my_container

掌握这些状态有助于快速排查容器问题,例如通过状态判断是否需要检查日志或调整配置。