You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Docker Python SDK实现docker container ls获取容器JSON信息

使用Docker Python SDK实现等价docker container ls --format "{{json .}}"功能

前置依赖

先安装官方维护的Docker Python SDK:
pip install docker

核心实现原理

docker container ls 命令默认仅返回运行中的容器,搭配--format "{{json .}}"会输出每个容器的全量元数据JSON结构,SDK的对应逻辑完全对齐原命令行为:

  1. 用docker.from_env()初始化客户端时,会自动读取本机Docker的环境变量、套接字配置,和本地命令行docker客户端的连接逻辑完全一致
  2. 调用containers.list()方法时不传all=True参数,默认仅返回运行状态的容器,和不带-a的docker container ls行为匹配
  3. 每个返回的容器对象自带的attrs属性,就是和命令行JSON输出结构完全一致的Python字典,可直接序列化、提取字段使用

可直接运行的代码示例

import docker
import json

# 初始化本地Docker客户端连接
client = docker.from_env()

# 获取所有运行中容器,等价于执行 docker container ls
running_containers = client.containers.list()

# 提取每个容器的全量元数据,等价于--format "{{json .}}"的输出结果
container_metadata = [container.attrs for container in running_containers]

# 打印单条结果验证结构
for info in container_metadata:
    print(json.dumps(info, indent=2, ensure_ascii=False))

HTML展示适配建议

你拿到container_metadata的结构化数据后,可直接传入Web服务的模板层渲染,注意几个实践要点:

  • 不建议直接把全量元数据输出到前端页面,其中可能包含环境变量、挂载路径、密钥等敏感信息
  • 前端展示常用字段可直接从元数据中提取:短ID(取Id字段前12位)、容器名(取Name字段去掉开头的/)、镜像名(Config.Image)、创建时间(Created)、端口映射(NetworkSettings.Ports)、运行状态(State.Status)
  • 如果需要做实时刷新效果,可将容器查询逻辑封装为后端接口,前端定时拉取JSON数据局部更新页面即可

常用命令行参数和SDK的对应关系

  • 等价docker container ls -a(查询所有容器,包含停止、异常退出状态):调用client.containers.list(all=True)
  • 等价docker container ls --filter条件过滤:给list()方法传入filters字典参数,例如查询所有nginx镜像启动的容器:client.containers.list(filters={"ancestor": "nginx"})
  • 连接远程Docker节点:初始化客户端时指定节点地址即可,示例:docker.DockerClient(base_url="tcp://你的Docker节点IP:2375")

注意:运行脚本的账号需要拥有Docker套接字的访问权限,否则会抛出连接拒绝错误,权限要求和本地直接执行docker命令完全一致。

内容的提问来源于stack exchange,提问作者Urim Suh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:57:16