overlay2

overlay2原生支持128层,这提供docker build和docker commit更好的性能支持
在执行完docker pull ubuntu后,可以看到

$ ls -l /var/lib/docker/overlay2total 24
drwx------ 5 root root 4096 Jun 20 07:36 223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7
drwx------ 3 root root 4096 Jun 20 07:36 3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b
drwx------ 5 root root 4096 Jun 20 07:36 4e9fa83caff3e8f4cc83693fa407a4a9fac9573deaf481506c102d484dd1e6a1
drwx------ 5 root root 4096 Jun 20 07:36 e8876a226237217ec61c4baf238a32992291d059fdac95ed6303bdff3f59cff5
drwx------ 5 root root 4096 Jun 20 07:36 eca1e4e1694283e001f200a667bb3cb40853cf2d1b12c29feda7422fed78afed
drwx------ 2 root root 4096 Jun 20 07:36 l

这个l目录是新加的,这里面都是软连接文件目录的简写标识,这个主要是为了避免mount时候页大小的限制

$ ls -l /var/lib/docker/overlay2/ltotal 20
lrwxrwxrwx 1 root root 72 Jun 20 07:36 6Y5IM2XC7TSNIJZZFLJCS6I4I4 -> ../3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/diff
lrwxrwxrwx 1 root root 72 Jun 20 07:36 B3WWEFKBG3PLLV737KZFIASSW7 -> ../4e9fa83caff3e8f4cc83693fa407a4a9fac9573deaf481506c102d484dd1e6a1/diff
lrwxrwxrwx 1 root root 72 Jun 20 07:36 JEYMODZYFCZFYSDABYXD5MF6YO -> ../eca1e4e1694283e001f200a667bb3cb40853cf2d1b12c29feda7422fed78afed/diff
lrwxrwxrwx 1 root root 72 Jun 20 07:36 NFYKDW6APBCCUCTOUSYDH4DXAT -> ../223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7/diff
lrwxrwxrwx 1 root root 72 Jun 20 07:36 UL2MW33MSE3Q5VYIKBRN4ZAGQP -> ../e8876a226237217ec61c4baf238a32992291d059fdac95ed6303bdff3f59cff5/diff

然后我们看看具体的目录下是什么,如果是最下面的是没有lower的

 ls /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/diff  linkcat /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/link

6Y5IM2XC7TSNIJZZFLJCS6I4I4ls  /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/diffbin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

lower从第二次开始

//最底层
cat 72dd847f8c4a40ce1762353c216d32e18db433b17c65e61ee1558758631fb59f/lower
cat: 72dd847f8c4a40ce1762353c216d32e18db433b17c65e61ee1558758631fb59f/lower: 没有那个文件或目录//倒数第二次层
cat 91af527ebbb6357fb1694334be10105edd07432da7cb901ef17ecdaf28944442/lower
l/YSWCORVIDFAIEIAFPP5AWBJZ5G//倒数第三次
cat 76bc3e1bdecdd1da6ecfea3086d7fecefa589e567da864fd5a4b910c04568bbb/lower
l/N7S5NM6TVQ4X7NFK7ROIQ6JOAP:l/YSWCORVIDFAIEIAFPP5AWBJZ5G//倒数第四底层
cat 6d7bdb155539b21b411fe5a4b7ebd41a7bc92dfb5d0158b961622dee834e19d0/lower
l/Q7UBZ47OWOXEF4YL5POZBJ3UKY:l/N7S5NM6TVQ4X7NFK7ROIQ6JOAP:l/YSWCORVIDFAIEIAFPP5AWBJZ5G//镜像最上层
cat c249bc61bf63b4f39b316b30f0dbe83bc6b9425f6fc92b28dd9b36bf80308f5e/lower
l/JF7WPJE6K6CN5A7SSJEYDWWWMA:l/Q7UBZ47OWOXEF4YL5POZBJ3UKY:l/N7S5NM6TVQ4X7NFK7ROIQ6JOAP:l/YSWCORVIDFAIEIAFPP5AWBJZ5G

通过lower标识了镜像的父层的分层关联关系

diff记录了本层的信息,

ll  91af527ebbb6357fb1694334be10105edd07432da7cb901ef17ecdaf28944442/diff/drwxr-xr-x 4 root root 4096 1月  26 02:23 etc
drwxr-xr-x 2 root root 4096 1月  26 02:23 sbin
drwxr-xr-x 3 root root 4096 1月  24 06:49 usr
drwxr-xr-x 3 root root 4096 1月  24 06:49 var

如果是容器层,还会多一个merge层,这个和overlay的merge的概念是一样的。譬如我启动一个容器,并在var目录下创建aaaa文件可以看到最上层的读写层


ll a1d281675ce2eacb0617b989ae846e29b8890954b8917b2919fbd025f537d7a0/diff/var/-rw-r--r-- 1 root root 0 1月  31 12:23 aaaall a1d281675ce2eacb0617b989ae846e29b8890954b8917b2919fbd025f537d7a0/merged/var/-rw-r--r-- 1 root root    0 1月  31 12:23 aaaa
drwxr-xr-x 2 root root 4096 4月  13 2016 backups
drwxr-xr-x 5 root root 4096 1月  24 06:49 cache
drwxr-xr-x 1 root root 4096 2月   5 2016 lib
drwxrwsr-x 2 root ftp  4096 4月  13 2016 local
lrwxrwxrwx 1 root root    9 1月  24 06:49 lock -> /run/lock
drwxr-xr-x 4 root root 4096 1月  24 06:49 log
drwxrwsr-x 2 root mem  4096 1月  24 06:49 mail
drwxr-xr-x 2 root root 4096 1月  24 06:49 opt
lrwxrwxrwx 1 root root    4 1月  24 06:49 run -> /run
drwxr-xr-x 2 root root 4096 1月  24 06:49 spool
drwxrwxrwt 2 root root 4096 1月  24 06:49 tmp

这里如果启动容器还有一点需要介绍,你会看到多了一个”读写层-init”,这个只读层,它的目的是为了初始化容器配置信息,譬如hostname等信息

ll a1d281675ce2eacb0617b989ae846e29b8890954b8917b2919fbd025f537d7a0-init/diff/etc/hostname
-rwxr-xr-x 1 root root 0 1月  31 12:21 a1d281675ce2eacb0617b989ae846e29b8890954b8917b2919fbd025f537d7a0-init/diff/etc/hostname

查看mount信息

 mount|grep overlay
overlay on /var/lib/docker/overlay2/a1d281675ce2eacb0617b989ae846e29b8890954b8917b2919fbd025f537d7a0/merged type
overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/EETCZ74DSQUEXSCTWSVYKD6RSA:
/var/lib/docker/overlay2/l/MOZ5Z5Y6HVYMH2C5H4HCP64VPX:/var/lib/docker/overlay2/l/JF7WPJE6K6CN5A7SSJEYDWWWMA:
/var/lib/docker/overlay2/l/Q7UBZ47OWOXEF4YL5POZBJ3UKY:/var/lib/docker/overlay2/l/N7S5NM6TVQ4X7NFK7ROIQ6JOAP:
/var/lib/docker/overlay2/l/YSWCORVIDFAIEIAFPP5AWBJZ5G,
upperdir=/var/lib/docker/overlay2/a1d281675ce2eacb0617b989ae846e29b8890954b8917b2919fbd025f537d7a0/diff,
workdir=/var/lib/docker/overlay2/a1d281675ce2eacb0617b989ae846e29b8890954b8917b2919fbd025f537d7a0/work)

上面lowdir(只读层),第一个是最上层,譬如EETCZ74DSQUEXSCTWSVYKD6RSA,这个顺序很重要

docker 存储驱动之overlay2相关推荐

  1. Docker——docker存储驱动原理

    摘要 Docker 主要是基于 Namespace.cgroups 和联合文件系统这三大核心技术实现的.联合文件系统(Union File System,Unionfs)是一种分层的轻量级文件系统,它 ...

  2. Docker存储驱动之OverlayFS简介

    简介 OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性: 1) 更简单地设计: 2) 从3.18开始,就进入了Linux内核主线: 3) 可能更快一些. ...

  3. DOCKER存储驱动之DEVICE MAPPER简介

    Device Mapper是一个基于kernel的框架,它增强了很多Linux上的高级卷管理技术.Docker的devicemapper驱动在镜像和容器管理上,利用了该框架的超配和快照功能.为了区别, ...

  4. Docker存储驱动

    Docker Storage Driver 每个 Docker 容器都有一个本地存储空间,用于保存层叠的镜像层(Image Layer)以及挂载的容器文件系统. 默认情况下,容器的所有读写操作都发生在 ...

  5. docker 存储驱动之overlay

    overlay OverlayFS是一个类似于AUFS 的现代联合文件系统,但更快,实现更简单.Docker为OverlayFS提供了一个存储驱动程序. * 注:OverlayFS是内核提供的文件系统 ...

  6. Docker存储驱动devicemapper介绍和配置

    一.devicemapper介绍 1 2 3 4 5 6 7 8 9 Device Mapper是Linux系统中基于内核的高级卷管理技术框架.Docker的devicemapper存储驱动就是基于该 ...

  7. docker存储驱动模式之direct-lvm配置

    最近在虚拟机上玩docker,但是发现默认安装使用的是loop-lvm的模式做后端存储,这个肯对对后面的实验会造成影响,而且docker官方也不建议在生产环境下使用loop-lvm,下图为docker ...

  8. Docker 存储选型,这些年我们遇到的坑

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 随着Docker 容器技术的不断发展和 ...

  9. Docker 容器文件存储驱动 Overlay2

    码字不易,转载请注明出处!! 写在前面 Docker 文件存储驱动有很多种,比如 overlay2.aufs等,可以通过命令 docker info 查看: > # docker info &g ...

最新文章

  1. How does SGD weight_decay work?
  2. 云原生应用的10大关键属性
  3. 如何通过“流量线索”进行恶意程序感染分析
  4. ML之SVM(三种):基于三种SVM(linearSVR、polySVR、RBFSVR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
  5. 英语影视台词---六、Saving Private Ryan Quotes
  6. ngrok编译和安装
  7. python断言区间_断言整数在范围内
  8. OAuth(开放授权):(第三方)通过(授权)令牌(Access Token)访问用户数据
  9. matlab柱状斜线_Matlab小练习:按斜线方向依次赋值矩阵
  10. 《H5 移动营销设计指南》 读书笔记整理
  11. 定了!华为P30/P30 Pro正式官宣:3月26日见
  12. 万亿美元软件浪潮来临,开发者是核心!
  13. 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法
  14. SharedPreferences小探
  15. FI-MM-CO T-CODE (中英文)
  16. python插件安装包_Python的插件安装
  17. 【shell案例】学员管理系统
  18. 参考文献意译翻译借鉴
  19. Unity3d TextMeshPro教程
  20. 人生苦短,用Python爬取微博大V

热门文章

  1. 不借助 matlab 内置函数,生撸均值方差模型
  2. android高德地图多个mark点击,Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗...
  3. html5 游戏 闪退,WeGame闪退怎么办?WeGame闪退的六种解决办法
  4. 软件工程实践者的思想
  5. 爱的五种语言:创造完美的两性沟通
  6. OpenGL(5)Texture - 两张图片
  7. 三角函数积分的换元法
  8. MongoDB分片实战
  9. Jini技术常见问题解答
  10. 全新数据增强 | TransMix 超越Mix-up、Cut-mix方法让模型更加鲁棒、精度更高