各種碼頭工人檢查的例子

我發現 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