從容器中獲取特定資訊
你可以通過執行以下命令從容器中獲取特定資訊:
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]