docker儲存驅動詳解 OverlayFS
阿新 • • 發佈:2021-06-24
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內部使用的