如何获取Docker所有状态类型列表?含容器及API相关状态
获取Docker所有状态类型完整列表的途径
以下是几种可靠的获取Docker全量状态类型的方法:
1. 查阅Docker官方文档
Docker官方文档中明确定义了容器生命周期的核心状态(如Created、Up、Exited、Paused、Restarting、Dead),以及镜像拉取、推送、构建过程中的临时状态(如preparing、downloading、pushing、verifying checksum、waiting),这些状态的含义和出现场景都有详细说明。
2. 查看Docker核心源码
所有状态字符串都硬编码在Docker的核心代码中,可直接定位到对应文件查看:
- 容器核心状态:在
container/state.go文件中定义了容器生命周期的基础状态枚举 - 镜像操作相关临时状态:分散在
builder(构建)、registry(镜像仓库交互)等模块的代码中,比如拉取镜像时的downloading、校验时的verifying checksum
3. 通过Docker Engine API查询
通过Docker Engine的REST API可以获取细粒度的状态信息:
- 容器详细状态:调用
GET /containers/{container_id}/json接口,返回结果的State字段包含完整的容器状态数据,包括Status(展示态)、Running、Paused等布尔型状态标识 - 操作过程状态:执行镜像构建、拉取等操作时,通过API的实时日志流(如
POST /build的响应流)可以捕获到preparing、waiting这类临时状态
4. 监控Docker实时事件与命令输出
- 使用
docker events命令可以实时接收Docker的所有事件流,涵盖容器状态变更、镜像拉取/推送的全流程状态,能直接观察到所有出现的状态类型 - 执行
docker ps -a可列出所有容器的当前状态,结合docker logs、docker build等命令的输出,也能收集到各类临时状态
示例:查看容器详细状态
# 通过命令行查看容器完整状态 docker inspect <container_id> | jq '.[] | .State'
Python API中获取容器状态
import docker client = docker.from_env() container = client.containers.get("<container_id>") # 获取完整状态字典 full_state = container.attrs['State'] # 获取展示态状态字符串 status = container.status
内容的提问来源于stack exchange,提问作者J'e
相关产品推荐
相关产品推荐

