【docker系列】存储驱动的作用与选择

一、镜像层与容器层

在本专栏前文中我们已经为大家介绍过,镜像分层是由Dockerfile定义的构建步骤所决定。镜像层只能读不能写,当容器启动之后所有的数据写入操作都发生在容器层。如果对于镜像层的只读文件,容器运行时想要做修改,实际上是进行了写时复制。这里做简单的回顾,更详细内容可以回头去看本专栏中的《镜像分层原理》

二、存储驱动的作用

下图展示了,多个容器共享一个镜像.镜像层是只读层,不变的.多个容器层在同一个镜像层之上,并且相互独立,互相不影响.

docker 存储驱动的作用就是将镜像层和容器层、数据卷联合起来组成docker容器文件系统。在容器中的应用服务看来,docker容器的文件系统与普通的OS文件系统并无区别

三、存储驱动的选择

存储驱动的类型 描述
overlay2 overlay2是所有当前支持的 Linux 发行版的首选存储驱动程序,不需要做额外配置。
aufs aufs存储驱动是在 Docker 18.06 和更早版本的首选存储驱动程序。在不支持overlay2的早期 Ubuntu 和 Debian发行版中使用该存储驱动。

对于绝大多数较新的linux发行版,overlay2目前都是首选的存储驱动。

Linux 发行版 推荐使用的存储驱动 可选存储驱动
Ubuntu overlay2 overlay¹,devicemapper²,aufs³,zfs,vfs
Debian overlay2 overlay¹,devicemapper²,aufs³,vfs
CentOS overlay2 overlay¹,devicemapper²,zfs,vfs
Fedora overlay2 overlay¹,devicemapper²,zfs,vfs
SLES 15 overlay2 overlay¹,devicemapper²,vfs
RHEL overlay2 overlay¹,devicemapper²,vfs

另外,docker还支持fuse-overlayfsbtrfszfsvfsdevicemapperoverlay 等存储驱动。通常情况下,存储驱动的选择不用运维或开发者操心,docker引擎有自己的一套优先级逻辑选择使用哪个存储驱动。比如:不同的宿主机文件系统格式,会影响存储驱动的选择。

存储驱动 兼容的宿主机文件系统格式
overlay2,overlay xfs with ftype=1,ext4
fuse-overlayfs 任何文件系统格式
aufs xfs,ext4
devicemapper direct-lvm
btrfs btrfs
zfs zfs
vfs 任何文件系统格式

根据上表,建议您安装docker的宿主机服务器OS文件格式是xfs或者ext4格式的,使用overlay2存储驱动。linux操作系统使用df -T查看文件系统的格式


通过docker info命令可以查看当前主机的docker引擎所选择使用的存储驱动,以及宿主机的文件格式。

# docker info  
……
 Storage Driver: overlay2
  Backing Filesystem: xfs
……

猜你喜欢

转载自blog.csdn.net/hanxiaotongtong/article/details/124939519
今日推荐