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内部使用的

浙公网安备 33010602011771号