docker inspect
是docker客戶端的原生命令,用於查看docker對象的底層基礎信息。包括容器的id、建立時間、運行狀態、啓動參數、目錄掛載、網路配置等等。另外,該命令也能夠用來查看docker鏡像的信息。
官方描述以下:python
Return low-level information on Docker objects
語法以下:redis
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
下表摘自官網docker
Name, shorthand | Default | Description |
--format , -f |
Format the output using the given Go template | |
--size , -s |
Display total file sizes if the type is container | |
--type |
Return JSON for specified type |
如上表,--type
用於指定docker對象類型,如:container, image。在容器與鏡像同名時可使用,使用頻率較低。好比,當你機器上一個容器名爲redis, 一個鏡像爲redis:latest,則可使用下面的命令查看鏡像信息。不使用type參數,則返回容器信息:json
# 查看redis:latest鏡像信息 docker inspect --type=image redis # 查看redis容器信息 docker inspect redis
--size
用於查看容器的文件大小,加上該參數,輸出的結果中會包含SizeRootFs
和SizeRw
(目前我還不是很肯定這兩個值的含義,望知情者告知)。bash
以上兩個參數都是用得比較少的,--format
實用性最大,使用頻率也比較高。從表格描述可知,傳入的參數值應該是go語言的模板。它很強大,能夠作不少go函數的操做,因爲個人go語言尚未入門,因此這裏就不說太多耍雜技的了,以避免翻車,下面說一下經常使用的。網絡
在實踐中,咱們每每只須要查看其中部分信息,好比目錄掛載信息、網絡信息。而直接輸入docker inspect container
時,會輸出容器的全部信息,
就顯得比較臃腫,咱們在命令行中翻頁還不方便。 此時,--format
的實用性就體現出來了。實踐中的經常使用操做以下函數
輸入以下命令, 則會輸出容器的Mounts信息,能夠看到容器中各個目錄在宿主機的具體掛載位置。學習
docker inspect --format="{{json .Mounts}}" container
參數中的json是go語言的方法名,後面是取Mounts的值作json化處理。去掉json也是能夠的。
若是以爲這樣輸入仍是不太好看,能夠對json再做進一步處理,如使用python的json模塊或者jq美化輸出。命令以下:命令行
#使用python的json模塊美化 docker inspect --format="{{json .Mounts}}" container | python -m json.tool #使用jq美化 docker inspect --format="{{json .Mounts}}" container | jq
查看網絡信息可使用下面命令:code
#查看完整網絡信息 docker inspect --format="{{json .NetworkSettings}}" container | jq #查看網絡端口映射 docker inspect --format="{{json .NetworkSettings.Ports}}" container | jq # 查看容器的網絡ip、網關等信息 docker inspect --format="{{json .NetworkSettings.Networks}}" container | jq
若是感興趣,還能夠充分利用這個--format
參數,由於它是go的模板語法,差很少是能夠寫go的代碼。例如上述的命令,json
就是go的方法名
因此能夠結合其餘的go方法(如range
,split
)來耍雜技,本文就不班門弄斧了。