当前位置: 首页 > news >正文

docker imageID计算

Image ID是在本地由Docker根据镜像的描述文件计算的,并用于imagedb的目录名称

docker镜像id都保存在/var/lib/docker/image/overlay2/imagedb/content/sha256下面,都是一些以sha256sum计算文件内容得出的哈希值的文件。

#ls /var/lib/docker/image/overlay2/imagedb/content/sha256/f9499facb1e8c3c907d82f50441b8da45115c4314a9c175c8b3797e489c1cf1e  -al
-rw------- 1 root root 1784 Mar 27  2021 /var/lib/docker/image/overlay2/imagedb/content/sha256/f9499facb1e8c3c907d82f50441b8da45115c4314a9c175c8b3797e489c1cf1e#docker images| grep f94
xxx/library/k8s.gcr.io/metrics-server-noarch   v0.3.6                                                           f9499facb1e8        3 years ago         38.3MB对比上面可以发现/xxx/sha256值和镜像Id一样计算imageID的值
#sha256sum   /var/lib/docker/image/overlay2/imagedb/content/sha256/f9499facb1e8c3c907d82f50441b8da45115c4314a9c175c8b3797e489c1cf1e 
f9499facb1e8c3c907d82f50441b8da45115c4314a9c175c8b3797e489c1cf1e  /var/lib/docker/image/overlay2/imagedb/content/sha256/f9499facb1e8c3c907d82f50441b8da45115c4314a9c175c8b3797e489c1cf1e查看镜像信息
#cat    /var/lib/docker/image/overlay2/imagedb/content/sha256/f9499facb1e8c3c907d82f50441b8da45115c4314a9c175c8b3797e489c1cf1e | jq
上面的命令和docker inspect <imageID>的输出内容是一致的

docker 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.

  • mount-id

    # cat mount-id // 查看mount id号
    # mount | grep overlay
    # cd /var/lib/docker/overlay2/<mount-id>
    包含了一个文件lower,它指定了他的底层(父层),diff文件夹也是存储了这个层的具体内容,merged文件夹包含了它和它的底(父)层的合并内容这就是镜像+容器的所有内容,work文件夹提供Overlay内部使用

镜像ID的生成过程参考:https://github.com/distribution/distribution/blob/main/docs/spec/api.md

http://www.lryc.cn/news/32765.html

相关文章:

  • 借助媛如意让ROS机器人turtlesim画出美丽的曲线-云课版本
  • 小区业主入户安检小程序开发
  • 【C++知识点】异常处理
  • 【FATE联邦学习debug】 No module named ‘federatedml‘
  • 【Git】P1 Git 基础
  • 智能交通数据集Rope3D(仅限科研使用)
  • Java虚拟机JVM-面试题
  • 详细的说说Redis的数据类型
  • 798.差分矩阵
  • InfluxDB 2 介绍与使用 flux查询 数据可视化
  • Qt QTreeView简单使用
  • Wannacrypt蠕虫老树开花?又见Wannacrypt
  • 结合基于规则和机器学习的方法构建强大的混合系统
  • Spring Security OAuth2实现多用户类型认证、刷新Token
  • 云计算介绍,让你更了解云计算
  • 阿里大佬翻遍全网Java面试文章,总结出这份1658页文档,GitHub收获25K+点赞
  • 【JDK1.8 新特性】Lambda表达式
  • 【Vue.js】Vuex核心概念
  • react router零基础使用教程
  • IOC三种依赖注入的方式,以及区别
  • Ubuntu18安装新版本PCL-1.13,并和ROS自带PCL-1.8共存
  • 计算机图形学08:中点BH算法绘制抛物线(100x = y^2)
  • 基于java的高校辅导员工作管理系统
  • 字节3次都没裁掉的7年老测试。掌握设计业务与技术方案,打开上升通道!
  • 详细介绍关于链表【数据结构】
  • 2.3 二分搜索技术
  • RWEQ模型的土壤风蚀模数估算、其变化归因分析
  • 学习streamlit-1
  • GPS定位知识介绍
  • 【Linux】理解Linux环境变量