各种码头工人检查的例子

我发现 docker inspect 文档中的示例看起来很神奇,但不能解释太多。

Docker 检查非常重要,因为它是从正在运行的容器 docker inspect -f ... container_id 中提取信息的简洁方法

(或所有正在运行的容器)

docker inspect -f ... $(docker ps -q)

避免一些不可靠的

docker command | grep or awk | tr or cut

当你启动 docker inspect 时,你可以轻松地从顶级获取值,使用基本语法,例如,对于运行 htop 的容器(来自 https://hub.docker.com/r/jess/htop/) ,一个 pid ae1

docker inspect -f '{{.Created}}' ae1

能表现出来

2016-07-14T17:44:14.159094456Z

要么

docker inspect -f '{{.Path}}' ae1

能表现出来

htop

现在,如果我提取我的 docker inspect 的一部分

我知道了

"State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 4525, "ExitCode": 0, "Error": "", "StartedAt": "2016-07-14T17:44:14.406286293Z", "FinishedAt": "0001-01-01T00:00:00Z" 所以我得到一本字典,因为它有 { ...} 和很多关键:值

所以命令

docker inspect -f '{{.State}}' ae1

将返回一个列表,例如

{running true false false false false 4525 0 2016-07-14T17:44:14.406286293Z 0001-01-01T00:00:00Z}

我可以轻松获得 State.Pid 的值

docker inspect -f '{{ .State.Pid }}' ae1

我明白了

4525

有时 docker inspect 会给出一个列表,因为它以 [ 开头并以 ] 结束

另一个例子,另一个容器

docker inspect -f ‘{{ .Config.Env }}’ 7a7

[DISPLAY=:0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin LANG=fr_FR.UTF-8 LANGUAGE=fr_FR:en LC_ALL=fr_FR.UTF-8 DEBIAN_FRONTEND=noninteractive HOME=/home/gg WINEARCH=win32 WINEPREFIX=/home/gg/.wine_captvty]

为了获得列表的第一个元素,我们在必需字段之前添加索引,在之后添加 0(作为第一个元素),所以

docker inspect -f ‘{{ index ( .Config.Env) 0 }}’ 7a7

DISPLAY=:0

我们使用相同的语法获得 1 而不是 0 的下一个元素

docker inspect -f ‘{{ index ( .Config.Env) 1 }}’ 7a7

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

我们可以得到这个列表的元素数量

docker inspect -f ‘{{ len .Config.Env }}’ 7a7

9

我们可以得到列表的最后一个元素,语法并不容易

docker inspect -f “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ $CID)-1]}}” 7a7