docker inspect获取格式化的数据

2020-05-15  本文已影响0人  CodingCode

docker inspect获取格式化的数据

docker inspect可以用来查询container,images,service的属性,它的输出是一个大json文本。
当然可以使用jq来解析内容,这里我们自带的--format参数获取其中的子项数据。(其实docker官方文档说是Go templates,而不是json,他们基本上是一回事)

格式:
docker inspect --format '{{FORMAT}}' <INSTANCEID>
<INSTANCEID>可能是container,image,或者service等等的ID。

  1. 获取名字Name,单值
docker inspect --format '{{.Name}}' <ID>
  1. 获取状态State,map
$ docker inspect --format '{{.State}}' <ID>
{running true false false false false 11416 0  2020-05-14T22:07:47.086279153Z 0001-01-01T00:00:00Z <nil>}

状态是一个map,就出这么难看的结果。
我们可以让他以json格式输出:

docker inspect --format '{{json .State}}' <ID>
{"Status":"running","Running":true,"Paused":false,"Restarting":false,"OOMKilled":false,"Dead":false,"Pid":11416,"ExitCode":0,"Error":"","StartedAt":"2020-05-14T22:07:47.086279153Z","FinishedAt":"0001-01-01T00:00:00Z"}

这就是一个json map了,然后可以使用json的工具处理数据。

  1. 获取.HostConfig.Binds,array
$ docker inspect --format '{{.HostConfig.Binds}}' <ID>
[/opt:/opt /etc/passwd:/etc/passwd:ro /home/test/data:/data:ro]

也可以指定分隔符输出格式:

$ docker inspect --format '{{join .HostConfig.Binds "----"}}' <ID>
/opt:/opt----/etc/passwd:/etc/passwd:ro----/home/test/data:/data:ro

也可以输出json格式:

$ docker inspect --format '{{json .HostConfig.Binds}}' <ID>
["/opt:/opt", "/etc/passwd:/etc/passwd:ro", "/home/test/data:/data:ro"]

按行输出:

$ docker inspect --format '{{range .HostConfig.Binds}}{{println .}}{{end}}' <ID>
/opt:/opt
/etc/passwd:/etc/passwd:ro
/etc/passwd:/etc/passwd:ro

注意最后有一个空行,我也很烦它,但也没有办法。

上一篇 下一篇

猜你喜欢

热点阅读