從容器中獲取特定資訊

你可以通過執行以下命令從容器中獲取特定資訊:

docker inspect -f '<format>' <container>

例如,你可以通過執行以下命令獲取網路設定:

docker inspect -f '{{ .NetworkSettings }}' <container>

你還可以獲得 IP 地址:

docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>

引數 -f 表示格式,並將接收 Go 模板作為輸入以格式化預期的內容,但這不會帶來美麗的回報,因此請嘗試:

docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}

json 關鍵字將返回 JSON。

所以要完成,有一點建議是在那裡使用 python 來格式化輸出 JSON:

docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool

瞧,你可以查詢 docker 上的任何內容,並使其在你的終端中看起來很漂亮。

也可以使用名為“ jq ” 的實用程式來幫助處理 docker inspect 命令輸出。

docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]

上面的命令將返回以下輸出:

[
  "172.17.0.1"
]

此輸出實際上是包含一個元素的列表。有時,docker inspect 會顯示幾個元素的列表,你可能想要引用特定元素。例如,如果 Config.Env 包含多個元素,則可以使用 index 引用此列表的第一個元素:

docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>

第一個元素索引為零,這意味著此列表的第二個元素位於索引 1

docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>

使用 len 可以獲得列表中元素的數量:

docker inspect --format ‘{{ len .Config.Env }}’ <container>

使用負數,可以引用列表的最後一個元素:

docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>

一些 docker inspect 資訊來自鍵的字典:值,這裡是一個 jess / spotify 執行容器的 docker inspect 的摘錄

"Config": { "Hostname": "8255f4804dde", "Domainname": "", "User": "spotify", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "DISPLAY=unix:0", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOME=/home/spotify" ], "Cmd": [ "-stylesheet=/home/spotify/spotify-override.css" ], "Image": "jess/spotify", "Volumes": null, "WorkingDir": "/home/spotify", "Entrypoint": [ "spotify" ], "OnBuild": null, "Labels": {} },

所以我得到整個 Config 部分的值

docker inspect -f '{{.Config}}' 825

{8255f4804dde spotify false false false map[] false false false [DISPLAY=unix:0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/home/spotify] [-stylesheet=/home/spotify/spotify-override.css] false jess/spotify map[] /home/spotify [spotify] false [] map[] }

但也是一個欄位,就像 Config.Image 的值一樣

docker inspect -f '{{index (.Config) "Image" }}' 825

jess/spotify

或 Config.Cmd

docker inspect -f '{{.Config.Cmd}}' 825

[-stylesheet=/home/spotify/spotify-override.css]