下载镜像
[root@EMS3 ~]# docker pull st/cci/mysql:5.6
5.6: Pulling from cci/mysql
fc7181108d40: Pull complete
efc857545aa7: Pull complete
b70e9965e625: Pull complete
f49b0c206544: Pull complete
ead2f5fd3a8b: Pull complete
345649b63bc3: Pull complete
b4e4e18f7376: Pull complete
d9de482ffe44: Pull complete
a7dd19719309: Pull complete
42caceda48ae: Pull complete
c7bb7d1d6123: Pull complete
Digest: sha256:64d700fe4d28bad980507ff893f341702c2273d0a42ea4da461163930276b09b
Status: Downloaded newer image for st/cci/mysql:5.6
镜像是分层的,逐个拉取,如果通过docker inspect imageId查看镜像的diff_ids,发现是一致的
"RootFS": {"Type": "layers","Layers": ["sha256:cf5b3c6798f77b1f78bf4e297b27cfa5b6caa982f04caeb5de7d13c255fd7a1e", 最低层"sha256:b686f68f8333dcd3c61717b236ead61e76623eca5ca52310c4efba5632aef6fc","sha256:b983f63f4c271ebf11edaa04de105c35ceddf1cbe152db47dc7f871da53454db","sha256:cf1d44aef62da0cec4ca16fb23d62f935c542f859c88704288bd4a8da0a9454f","sha256:17d2cfdb93fc387257be73e4517d0fbb944c420894df66807899658e510ec7f1","sha256:c70e6a41f98cad06754f64519b0798fcccd55fb579b644f2c39d37d7cdcfa2fc","sha256:1e5cc0d1c33d8a28720dfe93659d8a8e10978774eb6fa5f2f7ae63a05d98b721","sha256:999b5130f4e92686f78f1b105efee9a8a1cdaea3e7551d9d40374b81ae60cd81","sha256:a5fcf7bb9e94aef821e8769f54e573019bb3a34d3c8efc399c5b3eaa64568f23","sha256:1086cb31b2c49225b0804a232806389d4c0dfeb0c5cd9bb6e79e208c582fc900","sha256:3102b0030161820328562a99291bfd43368fd6fa67301ecf2f69c13c05561035" 最顶层 ]}
删除Mysql镜像
[root@EMS3 ~]# docker rmi 3ed1080b793f
Untagged: st/cci/mysql:5.6
Untagged: st/cci/mysql@sha256:64d700fe4d28bad980507ff893f341702c2273d0a42ea4da461163930276b09b
Deleted: sha256:3ed1080b793fc4a10cab741a04ce090caf1ad2932cbcc679b6587624af9f6157
Deleted: sha256:cc6b574d8a943462bfb61e372bc20c0953e15568cfed28f3a53403da9a327350
Deleted: sha256:82632da10e129e097535f1a3b22021770ac0e7353529ea881c0a7e9fa1ac5c5a
Deleted: sha256:c2536f6d4c234006a3e5a38f52bc3e112b0e6f08278a8c4db86134d572729858
Deleted: sha256:ff1a3577ac3cbac5c70284504667b9871dcb3f340ce502dfa013bfd70f89b73f
Deleted: sha256:4b7d91773c9d24d099a0b86fbdc35cb8cec0568de8ff9f01e578da9c430b206e
Deleted: sha256:60b97eb1f3b72adfb28a9da71fc7059a6fe255cf2989d1685f3fd8583d0c0e23
Deleted: sha256:037818566b488757260ae3d0064fbf6e47365cd08dc6409b7a018a512ef17f25
Deleted: sha256:000ec65531a617f550ee04f67c875b70f4b395af00b5f5bb7ed480b17078bc0b
Deleted: sha256:11d387a2efcce7596530d6be2299b6528b0afe070aba3caf3432ca31c3b0132d
Deleted: sha256:a883a9d05facd6220d9251787142b41cc6675f247bc47c94071e665adf65dbbf
Deleted: sha256:cf5b3c6798f77b1f78bf4e297b27cfa5b6caa982f04caeb5de7d13c255fd7a1e
从删除日志来看,删除也是逐层删除的,先删除最上层,再删最下层;
为何删除的内容除了最底层cf5b3c6以外,和上面的diffID都不一样呢?这里日志显示的是chainID,而不是diffID,chainID(n)=SHA256(chain(n-1) diffID(n)),具体信息可以参考另一篇文章 Docker存储驱动之–overlay2,搜索公式找到相关的解释
image元数据
image 元数据包括了镜像架构(如 amd64)、操作系统(如 linux)、镜像默认配置、构建该镜像的容器 ID 和配置、创建时间、创建该镜像的 docker 版本、构建镜像的历史信息以及 rootfs 组成。其中构建镜像的历史信息和 rootfs 组成部分除了具有描述镜像的作用外,还将镜像和构成该镜像的镜像层关联了起来。Docker 会根据历史信息和 rootfs 中的 diff_ids 计算出构成该镜像的镜像层的存储索引 chainID,这也是 docker 1.10 镜像存储中基于内容寻址的核心技术。
镜像 ID 与镜像元数据之间的映射关系以及元数据被保存在文件 /var/lib/docker/image/<graph_driver>/imagedb/content/sha256/<image_id> 中。
通过docker inspect可以查看完整的元数据信息:查看mysql的元数据
1.RootFS/Layers 存储各层的diffID,其值是固定不变的;
diffID可以计算出对应的layerID,也就是chainID也是固定不变得;不变是什么意思呢?不变就是说你把image删了,重新再下载一个,前后的元数据中diffID一致。
chainID对应的是:
/var/lib/docker/image/overlay2/layerdb/sha256/ <chain_Id>
再通过chainID查找各层真实的layer:
/var/lib/docker/image/overlay2/layerdb/sha256/ <chain_Id>/<“cache-id”>
2.每次会为镜像分配新的layer,并直接在元数据中标识出来
GraphDriver/Data/UpperDir:home/emsdata/docker/overlay2/2986c967aedf24b23f…,
其中2986c967aedf24b23f…对应真实layer层
注意:真实镜像每个layer层每次在下载镜像后,会动态生成新的,也就是说,diffID虽然不变,chainID也不变,但是指向的真实layer值每次都会更新;
本文发布于:2024-01-28 18:15:50,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064369569316.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |