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