docker inspect 命令使用技巧

描述與簡介

docker inspect是docker客戶端的原生命令,用於查看docker對象的底層基礎信息。包括容器的id、建立時間、運行狀態、啓動參數、目錄掛載、網路配置等等。另外,該命令也能夠用來查看docker鏡像的信息。
官方描述以下:python

Return low-level information on Docker objects

語法

語法以下:redis

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

OPTIONS選項

下表摘自官網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用於查看容器的文件大小,加上該參數,輸出的結果中會包含SizeRootFsSizeRw(目前我還不是很肯定這兩個值的含義,望知情者告知)。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方法(如rangesplit)來耍雜技,本文就不班門弄斧了。

參考資料

docker官方文檔

相關文章
相關標籤/搜索