在Docker中,Docker容器有几种状态?

在Docker中,容器的状态反映了其当前的运行情况,主要有以下6种常见状态:

1. created(已创建)

容器已被初始化创建,但从未启动过(或启动后被手动停止且未重新启动)。
通常由 docker create 命令(仅创建容器不启动)或 docker run 命令创建但未成功启动时产生。

2. running(运行中)

容器处于正常运行状态,内部的主进程(如 CMDENTRYPOINT 定义的命令)正在执行。
通过 docker run 启动容器后,若主进程未退出,容器会保持此状态。

3. restarting(重启中)

容器正在自动重启过程中。通常是因为配置了 --restart 策略(如 alwayson-failure),当容器异常退出后,Docker 会自动尝试重启它,此时状态会短暂显示为 restarting

4. paused(已暂停)

容器被冻结暂停,内部所有进程暂时停止运行(但未终止),资源占用保持暂停时的状态。
通过 docker pause <容器名/ID> 命令触发,可通过 docker unpause <容器名/ID> 恢复为 running 状态。

5. exited(已停止)

容器已正常终止,内部主进程已退出(可能是主动退出、完成任务或被 docker stop 命令终止)。
此状态下容器仍存在于系统中,可通过 docker start 重新启动为 running 状态,或通过 docker rm 删除。

6. dead(死亡)

一种罕见的错误状态,通常表示容器无法正常启动或停止(如因严重错误导致进程崩溃且无法恢复)。
此状态下容器基本不可用,一般需要通过 docker rm -f <容器名/ID> 强制删除后重新创建。

如何查看容器状态?

使用 docker ps 命令可查看容器状态:

  • docker ps:默认显示正在运行running)的容器。
  • docker ps -a:显示所有状态的容器(包括 exitedcreatedpaused 等)。

示例输出中的 STATUS 列会明确标注容器当前状态,例如:

CONTAINER ID   IMAGE     COMMAND       STATUS         PORTS     NAMES
abc123         nginx     "nginx -g ..." Up 5 minutes   80/tcp    web-server  # running状态
def456         ubuntu    "bash"        Exited (0) 2h ago           test-container  # exited状态

这些状态覆盖了容器从创建、运行到终止的全生命周期,理解状态变化有助于更好地管理和排查容器问题。

posted @ 2025-07-31 19:02  天道酬勤zjh  阅读(93)  评论(0)    收藏  举报