我曾经使用Docker历史命令检查图像中图层的大小,尽管现在显示"缺少"而不是由于1.10迁移到内容哈希而导致的图层ID。
我现在通过以下命令检索图像中所有图层的哈希值:
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_ids与上面的输出不同:
> ls /var/lib/docker/image/aufs/layerdb/sha256/
2088e4744016dbe95308d1920060f1fbc4a095ba5b9517d758745fc3986f2632
2a4049cf895d2384cb93d19f46f0d62560a48b2b202787edad2dc6e4b95a923a
8c63d05abe660a2f3f04d754de3ee3d927a17b3623a8e2be6d727e697f4b1e10
f747ac597de13b7f1ff918874f80bb83004232d7d6d4d45ad8890b58cdc79adc
然后我尝试检查另一个文件夹,例如/ var / lib / docker / aufs / layers:
> 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 :(得分:0)
我解决了这个问题:/ var / lib / docker / image / aufs / layerdb / sha256 /还包含一个名为“diff”的文件,其中包含与第一个命令输出相对应的diff_id。我使用此输出将大小映射到正确的diff_id。