目錄

docker inspect 指令:查看容器、映像檔的詳細資訊(-f 格式範例)

docker inspect 以 JSON 格式顯示 Docker 物件的完整設定與狀態,物件可以是容器、映像檔、Volume、網路。

語法

docker inspect [參數] 名稱或ID [名稱或ID...]
參數說明
-f, --format 範本用 Go 範本只取出需要的部分,或 json
--type 類型指定物件類型:container、image、volume、network 等(名稱重複時使用)
-s, --size容器:同時顯示大小

完整輸出

$ docker inspect web | head -n 12
[
    {
        "Id": "1ec4fdc5c592b09b64e8f28869c37f89ab17163f88bfcb09e82815a44b0e1164",
        "Created": "2026-10-13T05:28:35.05807319Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "Status": "running",

完整輸出有數百行,實務上幾乎都會加上 -f 只取需要的欄位。

-f 範本:常用的查詢

以下對一個名為 web 的 nginx 容器查詢(啟動時設定了 -e APP_MODE=demo):

$ docker inspect -f "{{.State.Status}} {{.State.StartedAt}}" web
running 2026-10-13T05:28:40.584115149Z

$ docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" web
172.18.0.2

$ docker inspect -f "{{json .Config.Env}}" web
["APP_MODE=demo","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.30.5","PKG_RELEASE=1","DYNPKG_RELEASE=1","NJS_VERSION=1.0.1","NJS_RELEASE=1","ACME_VERSION=0.4.1"]

$ docker inspect -f "{{.Config.Image}} {{.HostConfig.RestartPolicy.Name}}" web
nginx:1.30-alpine no
想知道的範本
狀態與啟動時間{{.State.Status}} {{.State.StartedAt}}
結束代碼、是否記憶體不足{{.State.ExitCode}} {{.State.OOMKilled}}
IP 位址{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}
環境變數{{json .Config.Env}}
使用的映像檔、重啟策略{{.Config.Image}} {{.HostConfig.RestartPolicy.Name}}
掛載{{json .Mounts}}
連接埠對應{{json .NetworkSettings.Ports}}
健康檢查結果{{json .State.Health}}
主機上的 PID{{.State.Pid}}

範本語法:

  • {{.欄位.子欄位}}:取出一個值。
  • {{json .欄位}}:以 JSON 輸出整段(陣列、物件)。
  • {{range .清單}}...{{end}}:逐一處理清單或物件中的每一項。

Docker 29 的變更:舊教學常見的 {{.NetworkSettings.IPAddress}} 已經移除,執行會出現 template parsing error: ... map has no entry for key "IPAddress"。請改用上表的 range 寫法。

映像檔、Volume、網路

$ docker inspect -f "{{.Config.Cmd}} {{.Config.Entrypoint}}" nginx:1.30-alpine
[nginx -g daemon off;] [/docker-entrypoint.sh]

$ docker inspect -f "{{.Architecture}} {{.Os}} {{.Size}}" nginx:1.30-alpine
amd64 linux 92750711

$ docker volume create v1
v1

$ docker inspect -f "{{.Mountpoint}}" v1
/var/lib/docker/volumes/v1/_data

$ docker inspect --type network -f "{{range .IPAM.Config}}{{.Subnet}}{{end}}" bridge
172.18.0.0/16

$ docker volume rm v1
v1
  • 映像檔的 .Config.Cmd 與 .Config.Entrypoint 是預設啟動指令,.Architecture 是 CPU 架構,.Size 是位元組數(92750711 約 92.8 MB)。
  • Volume 的 .Mountpoint 是資料在 Docker 主機上的實際位置。Docker Desktop 的這個路徑在虛擬機裡,Windows 或 macOS 上無法直接打開。
  • --type network 指定查詢網路,.IPAM.Config 是子網路設定。

相關章節

動手練習

練習:查出 web 容器掛載了哪些路徑,以及它的連接埠對應。

答案
docker inspect -f "{{json .Mounts}}" web
docker inspect -f "{{json .NetworkSettings.Ports}}" web

本頁的 web 沒有掛載、也沒有 -p,所以分別是 [] 和只有容器內連接埠的 {"80/tcp":null}。

常見問題

網路上教的 {{.NetworkSettings.IPAddress}} 為什麼出錯?

Docker 29 不再提供這個欄位,使用它會出現 map has no entry for key "IPAddress" 的錯誤。IP 位址要從各個網路中取得:{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}。

怎麼知道有哪些欄位可以查?

先不加 -f 執行一次,輸出的 JSON 結構就是欄位名稱,例如 State.Status 寫成 {{.State.Status}}。也可以用 {{json .Config}} 把某一段整個印出來。

Windows 上 -f 的引號怎麼寫?

在 PowerShell 和 CMD 中都用雙引號包住範本,例如 docker inspect -f "{{.State.Status}}" web。範本中不能再出現雙引號,需要時改用單引號字串。

更新於 2026年10月14日