对于mount-id来说,这是一个容器的挂载参数,需要把镜像运行起来。
1.首先运行进入Ubuntu系统命令:
# docker run -it ubuntu bash
2.通过查看容器的inspect
# docker inspect <containerID>
# docker inspect e45a43807df6
打印出来:
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/6f8e18760305a7290b7a12804a03bdfd13a486e320d989d99158fec489c4d00e-init/diff:
/var/lib/docker/overlay2/ddd5760e7cbfde67e325e77b540dfc13e7dccf1c7d1b156554d0a79378642bd1/diff:
/var/lib/docker/overlay2/d7c5c6626a2749b791472a456a5adea90595fccbc5eb3a89773279ba834063ee/diff:
/var/lib/docker/overlay2/a088c1e02d8a9681aa6456dbeae3eac98e8df8ac8b1f406b1ba697455466b1e2/diff",
"MergedDir": "/var/lib/docker/overlay2/6f8e18760305a7290b7a12804a03bdfd13a486e320d989d99158fec489c4d00e/merged",
"UpperDir": "/var/lib/docker/overlay2/6f8e18760305a7290b7a12804a03bdfd13a486e320d989d99158fec489c4d00e/diff",
"WorkDir": "/var/lib/docker/overlay2/6f8e18760305a7290b7a12804a03bdfd13a486e320d989d99158fec489c4d00e/work"
},
"Name": "overlay2"
},
如下图所示:
其中LowerDir都是底层的cache-id,还包括了顶层的init层,均为diff 文件夹包含的内容。
init层在lowerDir中,同样,也是存在/var/lib/docker/overlay2/<mount-id>-init/diff,即底层的依赖层都在LowerDir中。
/var/lib/docker/overlay2/ddd5760e7cbfde67e325e77b540dfc13e7dccf1c7d1b156554d0a79378642bd1/diff:
/var/lib/docker/overlay2/d7c5c6626a2749b791472a456a5adea90595fccbc5eb3a89773279ba834063ee/diff:
/var/lib/docker/overlay2/a088c1e02d8a9681aa6456dbeae3eac98e8df8ac8b1f406b1ba697455466b1e2/diff",
cache-id 相当于cacheID都是底层数据,这些值为docker中各ID之间的关系和计算(二)-layerID-diffID-chainID-cacheID的计算 的计算值。
而UpperDir是最顶层的mount-id,是container layer属于容器层,也是diff包含了内容。
MergedDir中/var/lib/docker/overlay2/<mount-id>/merged,属于合并层。
3.这些inspect信息保存在了/var/lib/docker/image/overlay2/layerdb/mounts下:
# cd /var/lib/docker/image/overlay2/layerdb/mounts
# cd <container-id> //某个容器的id
# ls
发现里面有init-id、mount-id、parent三个文件。
Init-id存储了init层的编号,和mount-id一致。
parent包含了最高层的chainID,也就是说通过最高层的chainID,再找其真正的cache-id,
3dd8c8d4fd5b59d543c8f75a67cdfaab30aef5a6d99aea3fe74d8cc69d4e7bf2 chainID ,也就是说chainID为逻辑上的,实际使用的为cache-id.
# cat mount-id // 查看mount id号
# mount | grep overlay
# cd /var/lib/docker/overlay2/<mount-id>
包含了一个文件lower,它指定了他的底层(父层),diff文件夹也是存储了这个层的具体内容,merged文件夹包含了它和它的底(父)层的合并内容这就是镜像+容器的所有内容,work文件夹提供Overlay内部使用,这些同理上一篇文章 docker中各ID之间的关系和计算(三)-overlay2和overlay