docker存储驱动详解 OverlayFS

docker支持的存储驱动

Linux distribution Recommended storage drivers Alternative drivers
Docker Engine - Community on Ubuntu overlay2 or aufs (for Ubuntu 14.04 running on kernel 3.13) overlay¹, devicemapper², zfs, vfs
Docker Engine - Community on Debian overlay2 (Debian Stretch), aufs or devicemapper (older versions) overlay¹, vfs
Docker Engine - Community on CentOS overlay2 overlay¹, devicemapper², zfs, vfs
Docker Engine - Community on Fedora overlay2 overlay¹, devicemapper², zfs, vfs

overlay2已经是主流了

OverlayFS是现代联合文件系统与AUFS类似,不过更快并且实现更简单,Docker提供了两种OverlayFS驱动:overlay overlay2
overlay2对Inode的利用率更高,但是要求内核在4.0以上

配置存储驱动

/etc/docker/daemon.json
{
  "storage-driver": "overlay2"
}
//verify
docker info

overlay2原理

OverlayFS叠加两种目录(lowerdir upperdir),展示为一个目录,这些目录叫做层,并提供一个统一的挂载点。合并的视图通过merged目录暴露出来。
overlay2最低支持128个lower层。

ls -l /var/lib/docker/overlay2

total 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目录包含缩短的符号链接layer,主要是为了不超过mount参数长度。

$ ls /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/

diff  link

$ cat /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/link

6Y5IM2XC7TSNIJZZFLJCS6I4I4

$ ls  /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/diff

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

lower layer有个link文件,内容为上面缩短的符号链接,diff目录包含layer的内容

$ ls /var/lib/docker/overlay2/223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7

diff  link  lower  merged  work

$ cat /var/lib/docker/overlay2/223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7/lower

l/6Y5IM2XC7TSNIJZZFLJCS6I4I4

$ ls /var/lib/docker/overlay2/223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7/diff/

etc  sbin  usr  var

第二lower的layer和更高的layer,包含一个lower文件,内容为他的lower layer,diff目录包含他特有的内容,merge目录包含
所有lower layer和自己的内容,work目录是OverlayFs内部使用的

posted @ 2021-06-24 22:17  doite  阅读(352)  评论(0)    收藏  举报