各種碼頭工人檢查的例子
我發現 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