docker inspect
描述 | 返回 Docker 物件的底層資訊 |
---|---|
用法 | docker inspect [OPTIONS] NAME|ID [NAME|ID...] |
描述
Docker inspect 提供 Docker 控制的構造的詳細資訊。
預設情況下,docker inspect
將以 JSON 陣列的形式呈現結果。
選項
選項 | 預設值 | 描述 |
---|---|---|
-f, --format | 使用自定義模板格式化輸出 'json': 以 JSON 格式列印 'TEMPLATE': 使用給定的 Go 模板列印輸出。 有關使用模板格式化輸出的更多資訊,請參閱https://docs.docker.net.tw/go/formatting/ | |
-s, --size | 如果型別是容器,則顯示總檔案大小 | |
--type | 僅檢查給定型別的物件 |
示例
格式化輸出 (--format)
如果指定了格式,則將為每個結果執行給定的模板。
Go 的 text/template 包描述了格式的所有詳細資訊。
指定目標型別(--type)
--type config|container|image|node|network|secret|service|volume|task|plugin
docker inspect
命令透過 ID 或名稱匹配任何型別的物件。在某些情況下,多個型別的物件(例如,容器和卷)具有相同的名稱,導致結果模糊。
要將 docker inspect
限制為特定型別的物件,請使用 --type
選項。
以下示例檢查名為 myvolume
的卷。
$ docker inspect --type=volume myvolume
檢查容器的大小(-s, --size)
--size
或簡寫形式 -s
選項向 docker inspect
輸出新增兩個附加欄位。此選項僅適用於容器。容器不必正在執行,它也適用於已停止的容器。
$ docker inspect --size mycontainer
輸出包括常規 docker inspect
命令的完整輸出,幷包含以下附加欄位
SizeRootFs
:容器中所有檔案的總大小,以位元組為單位。SizeRw
:容器中已建立或更改的檔案的大小(與其映象相比),以位元組為單位。
$ docker run --name database -d redis
3b2cbf074c99db4a0cad35966a9e24d7bc277f5565c17233386589029b7db273
$ docker inspect --size database -f '{{ .SizeRootFs }}'
123125760
$ docker inspect --size database -f '{{ .SizeRw }}'
8192
$ docker exec database fallocate -l 1000 /newfile
$ docker inspect --size database -f '{{ .SizeRw }}'
12288
獲取例項的 IP 地址
在大多數情況下,您可以以相當直接的方式從 JSON 中挑選出任何欄位。
$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_ID
獲取例項的 MAC 地址
$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID
獲取例項的日誌路徑
$ docker inspect --format='{{.LogPath}}' $INSTANCE_ID
獲取例項的映象名稱
$ docker inspect --format='{{.Config.Image}}' $INSTANCE_ID
列出所有埠繫結
您可以在結果中迴圈遍歷陣列和對映以生成簡單的文字輸出
$ docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID
查詢特定的埠對映
當欄位名以數字開頭時,.Field
語法不起作用,但模板語言的 index
函式可以。.NetworkSettings.Ports
部分包含內部埠對映到外部地址/埠物件列表的對映。要僅獲取數字公共埠,您可以使用 index
查詢特定的埠對映,然後 index
0 包含該埠對映中的第一個物件。然後,指定 HostPort
欄位以獲取公共地址。
$ docker inspect --format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}' $INSTANCE_ID
以 JSON 格式獲取子部分
如果您請求的欄位本身是一個包含其他欄位的結構,預設情況下您會得到內部值的 Go 風格轉儲。Docker 添加了一個模板函式 json
,可以應用於獲取 JSON 格式的結果。
$ docker inspect --format='{{json .Config}}' $INSTANCE_ID