Docker存储

本文介绍了Docker中的存储资源,包括由存储驱动程序管理的镜像层和容器层,以及DataVolume。详细解释了各种存储驱动程序的特点和适用场景,特别强调了overlay2的优势及其在Docker CE中的默认应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker存储资源

Docker为容器提供了两种存放数据的资源
1.由storage driver 管理的镜像层和容器层
2.Data Volume
1 Storage Driver
docker支持storage driver,有 AUFS、Device Mapper、Btrfs、OverlayFS、VFS 和 ZFS。它们都能实现分层的架构,同时又有各自的特性。
运行docker info查看的默认 driver:

 Server Version: 20.10.7
 Storage Driver: overlay2
  Backing Filesystem: extfs

Ubuntu 用的 AUFS,底层文件系统是 extfs,各层数据存放在 /var/lib/docker/aufs。
Redhat/CentOS 的默认 driver 是 Device Mapper
SUSE 则是 Btrfs。
存储驱动程序分类:

1、AUFS (advanced multi-layered unification filesystem)
2、Btrfs (通常念成 Butter FS,Better FS或B-tree FS)
3、Device mapper
4、OverlayFS
5、ZFS (Zettabyte File System)又名(Dynamic File System)
6、VFS (virtual File System)
存储驱动程序如何选择

  • aufs,overlay和overlay2全部在文件级而不是块级操作,这能更有效地使用内存。但容器的可写层在大文件读写时,容器会变大。
  • 块级存储驱动程序(如devicemapper,btrfs和zfs)更适合写入繁重的工作场景(虽然不如Docker卷)。
  • 对于一些写小文件频繁或者具有许多图层的容器或深层文件系统,overlay可能会比overlay2更优秀。
  • 使用 btrfs 和 zfs 需要大量的内存。 zfs 对于Paas等高密度工作负载来说是一个不错的选择。
    推荐选择顺序
    overlay2是优选的,随后是overlay。这2个都不需要额外的配置。overlay2是Docker CE的默认选择。
    device mapper是下一个选择,但因为需要在生产环境中使用直接的LVM,LVM零配置,所有性能非常差。
    在一般情况下,aufs,overlay,和 devicemapper 稳定性最高。
    如果你使用RHEL或其下游分支,而且你已经有LVM的使用经验。device mapper驱动可能是最好的选择。
    OverlayFS
    OverlayFS是与AUFS类似的联合文件系统,但速度更快,实现更简单。
    Docker为OverlayFS提供了两个存储驱动程序:
    原始的overlay
    更新和更稳定的overlay2。
    注意:如果您使用OverlayFS,请使用Overlay2驱动程序,因为它在inode利用率方面效率更高。
    支持OverlayFS的条件
    1 overlay2驱动程序支持docker EE,推荐使用docker CE
    2 overlay驱动程序允许但不推荐使用docker CE
    3 使用4.0或更高的Linux内核,或者RHEL或centos使用3.10-693的内核或更高版本。
    支持以下文件系统:
    ext4仅限RHEL7.1
    xfs(RHEL 7.2或更高版本),但仅限于 d_type=true 启用。要正确格式化 xfs 文件系统,请使用该选项 -n ftype=1。
    注意:更改存储驱动程序会使已创建的任何容器在本地系统上都无法访问。使用docker save保存的容器无需重建它们。
    overlay2的驱动过程:
  • overlay FS将当个Linux主机上的两个目录分层并呈现为单个目录,这些目录称为图层,同一过程叫联合挂载。
  • overlay将底层的目录叫lowerdir,生成目录成为upperdir,通过这些目录公开为一个视图就叫merged.
  • overlay仅仅支持驱动当个lower,overlayFS需要硬链接实现多层的镜像,而voerlay2支持驱动多个lower
    overlayFS层,(最大到128层)。
    所以overlay2驱动与层相关的docke build 和docker commit 提供了更好的性能,并且消耗更好的inodes。
    OVERLAYFS目录图:
    在这里插入图片描述
    位置:/var/lib/docker/overlay2
    其中的一些子目录:
    upper目录是容器的可写数据层。所有对容器的更改都是写到这个目录。
    merged目录是容器的挂载点。这是镜像”lowerdir”和容器“upperdir”的统一视图。任何对这个容器的修改将马上反映到这个目录。
    work目录是OverlayFS执行操作时所需的目录。如执行copy_up操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OPS_akai

奥利给

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值