docker 系统 df -v 输出为 json

docker system df -v output as json

我正在使用 docker 容器管理进行一些工作,需要获取 docker 容器状态。
我目前的做法是使用ssh客户端通过执行shell cmd来抓取。
例如,我可以通过执行 cmd:

获取容器统计信息
docker stats --no-stream --format '{"container":"{{ .Name }}","memory":{"raw":"{{ .MemUsage }}","percent":"{{ .MemPerc }}"},"cpu":"{{ .CPUPerc }}","networkIO":"{{.NetIO}}","BlockIO":"{{.BlockIO}}"}'

输出:

{"container":"postgresql","memory":{"raw":"255.4MiB / 31.21GiB","percent":"0.80%"},"cpu":"0.00%","networkIO":"1.03GB / 476MB,"BlockIO":"545MB / 7.67GB"}
{"container":"pgadmin","memory":{"raw":"146.1MiB / 31.21GiB","percent":"0.46%"},"cpu":"0.03%","networkIO":"26.2kB / 0B,"BlockIO":"200MB / 8.19kB"}
{"container":"pis_middle_layer_flask","memory":{"raw":"849.9MiB / 31.21GiB","percent":"2.66%"},"cpu":"13.48%","networkIO":"26.4kB / 0B,"BlockIO":"65.9MB / 0B"}

那么我怎样才能得到与 docker system df -v 相似的文本?
因为我想获得每个容器的大小及其体积大小。 我用相同的 cmd:

docker system df -v --format '{"container":"{{ .Name }}","memory":{"raw":"{{ .MemUsage }}","percent":"{{ .MemPerc }}"},"cpu":"{{ .CPUPerc }}","networkIO":"{{.NetIO}}","BlockIO":"{{.BlockIO}}"}'

但出现错误:

{"container":"template: :1:17: executing "" at <.Name>: can't evaluate field Name in type *formatter.diskUsageContext

我知道我弄错了 go template 关键字,但真的找不到任何关于它的文档。

好的...刚刚知道了。

docker system df -v --format "{{ json . }}"

这个 cmd 将 return 作为 json 所以我可以用 json.loads

解析它