2016-03-02 41 views
0

我曾經使用Docker history命令檢查圖像中圖層的大小,雖然現在由於1.10遷移到內容散列而顯示「丟失」而不是圖層ID。Docker圖層信息發佈v1.10

我現在通過這些命令檢索所有層的散列的圖像中:

docker pull ubuntu 
ID=$(docker inspect -f {{.Id}} ubuntu) 
sudo jq .rootfs.diff_ids /var/lib/docker/image/aufs/imagedb/content/$(echo $ID|tr ':' '/') 

這將返回的ubuntu圖像中的所有層的內容散列的列表:

"diff_ids": [ 
    "sha256:2a4049cf895d2384cb93d19f46f0d62560a48b2b202787edad2dc6e4b95a923a", 
    "sha256:01fbb4b5fa1b76ccdc289de098ea61925c7f8d3364159761720617b096f27bcc", 
    "sha256:d3492de15d7c87ea9db9ab123214d334f4bcb1e40846b77beebb4c37dd134a45", 
    "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef" 
], 

在/ var/lib/docker/image/aufs/layerdb/sha256 /我看到每層的信息,例如父級和大小,但是我注意到這個文件夾中的diff_id與上面的輸出不一樣:

> ls /var/lib/docker/image/aufs/layerdb/sha256/ 
2088e4744016dbe95308d1920060f1fbc4a095ba5b9517d758745fc3986f2632 
2a4049cf895d2384cb93d19f46f0d62560a48b2b202787edad2dc6e4b95a923a 
8c63d05abe660a2f3f04d754de3ee3d927a17b3623a8e2be6d727e697f4b1e10 
f747ac597de13b7f1ff918874f80bb83004232d7d6d4d45ad8890b58cdc79adc 

我又試圖檢查另一個文件夾,例如/ var/lib中/泊塢窗/ AUFS /層:

> ls /var/lib/docker/aufs/layers# 
58e7ed1f6d4ba047c9c714e66f10c014008ef4aa133d334198b8b1b7673f16e7 
c4dd5a81188e36457624849aaeea74d98ef571390db75d4a03efb5bccb8c04e3 
d31f918b7f59fcf768a9ae609141152cd5ae63943aac042429e3d2e04d472bcc 
e576c6d41b96bd6a47233a6c6ec2f586021aa945aae6bd0e73ab9d4ad051a94e 

正如你所看到的這些都是其他4內容再次散列。有人能告訴我所有這些散列之間的連接是什麼,以及如何找到Ubuntu映像的每一層的大小?我希望能夠將第一個輸出中的每個diff_id與大小匹配,但我不知道所有這些diff_id在不同文件夾中是如何相關的。編輯:我解決了這個問題 -/var/lib/docker/image/aufs/layerdb/sha256 /還包含一個名爲「diff」的文件,其中包含對應於第一個命令輸出的diff_id。我使用這個輸出來將大小映射到正確的diff_id。

回答

0

我解決了這個問題:/ var/lib/docker/image/aufs/layerdb/sha256 /還包含一個名爲「diff」的文件,其中包含與第一個命令的輸出對應的diff_id。我使用這個輸出來將大小映射到正確的diff_id。