Docker存储驱动介绍,docker存储驱动程序有哪些 8

作者 : 慕源网 本文共3014个字,预计阅读时间需要8分钟 发布时间: 2021-12-12 共1.22K人阅读

Docker 存储驱动程序介绍

Docker 存储驱动程序,也称为图形驱动程序,提供了一种在 Docker 主机上存储和管理镜像和容器的机制。Docker 使用支持不同存储驱动程序的可插拔架构。存储驱动程序允许我们的工作负载写入容器的可写层。Docker 支持多种不同的存储驱动程序,我们需要为我们的工作负载选择最佳的存储驱动程序。要选择最佳的存储驱动程序,重要的是要了解在 Docker 中构建和存储镜像的过程以及容器如何使用这些镜像。默认存储驱动程序是overlay2,它在Docker Engine – Community 和Docker EE 17.06.02-ee5 及更高版本上受支持,但是,我们可以根据需要更改它。

docker存储驱动程序有哪些

以下是 Docker 支持的不同存储驱动程序:

  • overlay2
  • aufs
  • devicemapper
  • btrfs
  • zfs
  • vfs

1.overlay2

  • 它是当前的默认存储驱动程序。
  • 它受到 Docker Engine – Community 和 Docker EE 17.06.02-ee5 及更新版本的支持。
  • 它比称为“overlay”的原始驱动程序更新且更稳定。
  • overlay2和overlay驱动程序的后备文件系统是 xfs。
  • Linux kernel 4.0或更高版本支持,overlay2需要RHEL或CentOS 3.10.0-514或更高版本,否则我们需要使用不推荐的overlay存储驱动。
  • Overlay2 和overlay驱动程序属于 Linux 内核驱动程序 OverlayFS 存储驱动程序,这是一个现代联合文件系统,它类似于 aufs,但是,OverlayFs 更快且易于实现。

2.aufs

  • AUFS 是一个联合文件系统,这意味着它将 AUFS 中称为分支的多个目录呈现为单个 Linux 主机上的单个目录。这些目录在 Docker 中称为层。
  • 它是overlay2之前的默认存储驱动程序,用于管理Ubuntu的Docker上的镜像和层级(layers ),以及Stretch之前的Debian版本。它是 Ubuntu 14.04 及更早版本中的默认存储驱动程序。
  • 此驱动程序适用于容器密度很重要的平台即服务,因为 AUFS 可以有效地在多个运行的容器之间共享镜像。
  • 它提供了快速的容器启动并使用更少的磁盘空间,因为 AUFS 在多个正在运行的容器之间共享镜像。
  • 它有效地使用内存,但是,在写入繁重的工作负载中效率不高,因为写入容器时延迟很高,因为它有多个目录,因此需要定位文件并将其复制到容器的顶层可写层。
  • 它应该与固态驱动器一起使用,以获得比旋转磁盘更快的读取和写入速度,并将卷用于写入繁重的工作负载以获得更好的性能。
  • AUFS 的后备文件系统是 xfs 和 ext4 Linux 文件系统。

3.devicemapper

  • 它是一个块存储驱动程序,将数据存储在块中。
  • 它适用于写入繁重的工作负载,因为它在块级别而不是文件级别存储数据。
  • 它是一个基于内核的框架,Docker 的 devicemapper 存储驱动程序利用其功能(例如精简配置和快照)来管理镜像和容器。
  • 它是 CentOS 7 及更早版本的默认存储驱动程序。
  • 它支持两种模式:

循环lvm模式:

  • loop-lvm 用于通过使用“环回”机制将本地磁盘上的文件模拟为实际的物理磁盘或块设备。这是因为 devicemapper 只支持外部或块设备。
  • 它仅用于测试目的,因为它提供了糟糕的性能。
  • 由于不需要外部设备,因此易于设置

直接lvm​​模式:

  • 它需要将其他设备连接到本地主机,因为它将数据存储在单独的设备上。
  • 它是生产就绪的,并提供更好的性能。
  • 它需要复杂的设置才能启用 direct-lvm。
  • 我们需要将 daemon.json 文件配置为使用 direct-lvm 模式。它有多个选项,可以根据需要进行设置。
  • 必须安装 lvm2 和 device-mapper-persistent-data 包才能使用 devicemapper。
  • 它使用 direct-lvm 作为后备文件系统。

4. btrfs

  • 此存储驱动程序也是主要 Linux 内核的一部分。
  • 它仅在用于 Docker EE 和 CS 引擎的 SLES(Suse Linux Enterprise Server)上受支持。
  • 但是,推荐用于 Ubuntu 或 Debian for Docker Engine – 社区版。
  • btrfs 驱动程序由 Btrfs 文件系统支持,Btrfs 文件系统是下一代写时复制文件系统。
  • Btrfs 文件系统有很多特性,例如块级操作、精简配置、写时复制快照等,Docker 的 btrfs 存储驱动程序使用 Btrfs 的这些特性来管理镜像和容器。
  • 它还需要专用的块存储,并且必须使用 Btrfs 文件系统进行格式化,但是,如果使用 SLES,我们不需要单独的块设备,因为它默认使用 Btrfs 进行格式化。建议使用额外的块设备以获得更好的性能。
  • 我们的内核必须支持 btrfs。

5. zfs

  • 它在 CDDL(通用开发和分发许可)下开源,由 Sun Microsystems(现为 Oracle Corporation)创建。
  • 它也是下一代文件系统,具有卷管理、快照、校验和、压缩和重复数据删除、复制等许多功能。
  • 由于 CDDL 和 GPL 之间的许可不兼容,它不是主线 Linux 内核的一部分。
  • 如果没有丰富的 ZFS 经验,不建议将此 Docker 存储驱动程序用于生产工作负载。
  • 它仅在 Ubuntu 14.04 或更高版本的 Docker CE 上受支持。
  • Docker EE 或 CS-engine 不支持它。

6.vfs

  • 它仅用于测试目的,不推荐用于生产用途。
  • 此存储驱动程序的性能很差。
  • 任何不能使用写时复制文件系统的文件系统都可以支持它。

Docker 存储驱动程序示例

让我们通过示例学习一些命令来了解 Docker 的存储驱动程序:

示例#1

我们使用 ‘docker info’ 命令来检查 Docker 使用的默认驱动程序,如下所示:

$docker info

说明: –在上面的快照中,我们可以看到 Docker 使用了 ‘overlay’ 存储驱动程序。

示例#2

现在我们想将 Docker 配置为使用“overlay2”作为默认存储驱动程序,我们可以通过编辑位于 /etc/docker/daemon.json 的“daemon.json”文件来做到这一点,如下所示:

步骤 1:首先使用以下命令停止 docker 服务: –

$sudo systemctl stop docker

Step2:将以下配置添加到’daemon.json’文件中,如果文件不存在则创建该文件。

Step3:再次启动docker服务如下:

$sudo systemctl start docker
$docker info

示例#3

我们可以运行一个容器并检查该容器正在使用哪个驱动程序:

$docker run -d --name test_container ubuntu
$docker inspect test_container | grep -i ‘graph’ -A 8

说明: –在上面的示例中,我们可以看到新创建的容器正在使用“overlay2”图形驱动程序或存储驱动程序。

结论

Docker 支持多种不同的存储驱动程序。我们必须了解每个驱动程序的功能并选择最适合我们工作负载的驱动程序。我们在选择 Docker 的存储驱动程序时考虑了三个高级因素,它们是整体性能、共享存储系统和稳定性。

推荐文章

这是 Docker 存储驱动程序的指南。在这里,我们讨论 Docker 支持的不同存储驱动程序和示例以及命令。

本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –

 


慕源网 » Docker存储驱动介绍,docker存储驱动程序有哪些 8

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录