docker inspect

說明傳回 Docker 物件的底層資訊
用法docker inspect [選項] 名稱|ID [名稱|ID...]

說明

Docker inspect 提供 Docker 控制的結構詳細資訊。

預設情況下,`docker inspect` 會以 JSON 陣列呈現結果。

格式化輸出(--format)

如果指定格式,則會針對每個結果執行給定的範本。

Go 的 text/template指定目標類型(--type)

--type 容器|映像檔|節點|網路|secret|服務|磁碟區|任務|外掛程式

`docker inspect` 命令可透過 ID 或名稱比對任何類型的物件。在某些情況下,具有相同名稱的多種類型物件(例如,容器和磁碟區)會存在,導致結果模稜兩可。

若要將 `docker inspect` 限制為特定類型的物件,請使用 `--type` 選項。

以下範例會檢查名為 `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

選項

選項預設值說明
-f, --format使用自訂範本格式化輸出
'json':以 JSON 格式列印
'TEMPLATE':使用給定的 Go 範本列印輸出。
請參閱 https://docker-docs.dev.org.tw/go/formatting/-s, --size(大小)
如果類型是容器,則顯示總檔案大小
--類型傳回指定類型的 JSON

範例

取得執行個體的 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