在Docker中,Docker容器有几种状态?
在Docker中,容器的状态反映了其当前的运行情况,主要有以下6种常见状态:
1. created
(已创建)
容器已被初始化创建,但从未启动过(或启动后被手动停止且未重新启动)。
通常由 docker create
命令(仅创建容器不启动)或 docker run
命令创建但未成功启动时产生。
2. running
(运行中)
容器处于正常运行状态,内部的主进程(如 CMD
或 ENTRYPOINT
定义的命令)正在执行。
通过 docker run
启动容器后,若主进程未退出,容器会保持此状态。
3. restarting
(重启中)
容器正在自动重启过程中。通常是因为配置了 --restart
策略(如 always
、on-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
:显示所有状态的容器(包括exited
、created
、paused
等)。
示例输出中的 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状态
这些状态覆盖了容器从创建、运行到终止的全生命周期,理解状态变化有助于更好地管理和排查容器问题。