首页 / 手册 / Docker Engine / 存储 / 存储驱动程序 / 选择存储驱动程序选择存储驱动程序目录每个 Linux 发行版支持的存储驱动程序支持的后备文件系统其他注意事项适合您的工作负载共享存储系统和存储驱动程序稳定性使用您自己的工作负载进行测试检查您当前的存储驱动程序相关信息理想情况下,写入容器的可写层的数据非常少,而您
使用 Docker 卷写入数据。但是,某些工作负载要求您能够
写入容器的可写层。这就是存储驱动程序的来源
在。
Docker 使用可插拔架构支持多个存储驱动程序。这
存储驱动程序控制镜像和容器在
Docker 主机。阅读存储驱动程序概述后,
下一步是为您的工作负载选择最佳存储驱动程序。使用存储空间
在最常见的场景中具有最佳整体性能和稳定性的驱动程序。
Docker Engine 在 Linux 上提供以下存储驱动程序:
司机描述overlay2overlay2是当前支持的所有 Linux 发行版的首选存储驱动程序,不需要额外配置。fuse-overlayfsfuse-overlayfs仅用于在不支持无根的旧主机上运行无根 Dockeroverlay2.这fuse-overlayfs从 Linux 内核 5.11 开始不需要使用 driver,并且overlay2即使在无根模式下也能工作。有关详细信息,请参阅无根模式文档。btrfs和zfs这btrfs和zfs存储驱动程序允许使用高级选项,例如创建“快照”,但需要更多的维护和设置。这些都依赖于正确配置的后备文件系统。vfs这vfs存储驱动程序用于测试目的,以及不能使用写入时复制文件系统的情况。此存储驱动程序的性能很差,通常不建议用于生产用途。如果没有,Docker 引擎有一个要使用的存储驱动程序的优先级列表
存储驱动程序,假设存储驱动程序满足
先决条件,并自动选择兼容的存储驱动程序。你
可以在 Docker Engine 27.4.0 的源代码中看到顺序。
某些存储驱动程序要求您对后备文件系统使用特定格式。
如果您有使用特定后备文件系统的外部要求,这可能会
限制您的选择。请参阅支持的后备文件系统。
缩小可以选择的存储驱动程序的范围后,您的选择
由工作负载的特征和稳定性级别决定
你需要。请参阅其他注意事项,以获取制作
最终决定。
每个 Linux 发行版支持的存储驱动程序
注意
通过编辑守护程序配置文件来修改存储驱动程序不是
在 Docker Desktop 上受支持。仅默认的overlay2driver 或 containerd 存储。这
下表也不适用于无根中的 Docker 引擎
模式。有关无根模式下可用的驱动程序,请参阅无根模式
文档。
您的作系统和内核可能不支持每个存储驱动程序。为
例btrfs仅在您的系统使用btrfs作为存储。在
general,以下配置适用于最新版本的 Linux
分配:
Linux 发行版推荐的存储驱动程序其他驱动程序Ubuntuoverlay2zfs,vfsDebianoverlay2vfsCentOS作系统overlay2zfs,vfsFedoraoverlay2zfs,vfsSLES 15 型overlay2vfsRHELoverlay2vfs如有疑问,最好的全能配置是使用现代 Linux
使用支持overlay2storage 驱动程序,并将
将 Docker 卷用于写入密集型工作负载,而不是依赖写入数据
添加到容器的可写层中。
这vfs存储驱动程序通常不是最佳选择,主要目的是
在不支持其他 storage-driver 的情况下进行调试。
在使用vfsstorage 驱动程序,请务必阅读其性能和存储特性及限制。
众所周知,上表中的建议适用于大量
用户。如果您使用推荐的配置并发现可重现的问题,
它可能会很快得到修复。如果您要使用的驱动程序是
根据此表不建议这样做,您可以自行承担风险运行它。你
可以并且应该仍然报告您遇到的任何问题。然而,此类问题
的优先级低于使用建议的
配置。
根据您的 Linux 发行版,其他存储驱动程序(例如btrfs五月
可用。这些存储驱动程序对于特定用例具有优势,
但可能需要额外的设置或维护,因此不建议使用
对于常见场景。请参阅这些存储驱动程序的文档
详。
支持的后备文件系统对于 Docker,后备文件系统是其中/var/lib/docker/已找到。某些存储驱动程序仅适用于特定的
后备文件系统。
存储驱动程序支持的后备文件系统overlay2xfsftype=1 时,ext4fuse-overlayfs任何文件系统btrfsbtrfszfszfsvfs任何文件系统其他注意事项适合您的工作负载此外,每个存储驱动程序都有自己的性能特征
使其或多或少适用于不同的工作负载。考虑一下
以下概括:
overlay2在文件级别而不是
块级别。这样可以更有效地使用内存,但容器的
在写入密集型工作负载中,可写层可能会变得相当大。块级存储驱动程序,例如btrfs和zfs执行
更适合写入密集型工作负载(尽管不如 Docker 卷)。btrfs和zfs需要大量内存。zfs是 PaaS 等高密度工作负载的不错选择。有关性能、适用性和最佳实践的更多信息,请参阅
在每个存储驱动程序的文档中。
共享存储系统和存储驱动程序如果您使用 SAN、NAS、硬件 RAID 或其他共享存储系统,则
系统可以提供高可用性、更高的性能、精简
预置、重复数据删除和压缩。在许多情况下,Docker 可以在
,但 Docker 并未与它们紧密集成。
每个 Docker 存储驱动程序都基于 Linux 文件系统或卷管理器。是
请务必遵循现有的最佳实践来作您的存储驱动程序
(filesystem 或 volume manager)的为
例如,如果在共享存储系统上使用 ZFS 存储驱动程序,则为
请务必遵循在此基础上作 ZFS 文件系统的最佳实践
特定的共享存储系统。
稳定性对于一些用户来说,稳定性比性能更重要。虽然 Docker
认为这里提到的所有存储驱动程序都是稳定的,有些是较新的
并且仍在积极开发中。通常overlay2提供
最高的稳定性。
使用您自己的工作负载进行测试您可以在不同的
存储驱动程序。确保使用等效的硬件和工作负载进行匹配
生产条件,以便您了解哪个存储驱动程序提供最佳
整体性能。
检查您当前的存储驱动程序每个存储驱动程序的详细文档详细介绍了所有
使用给定存储驱动程序的设置步骤。
要查看 Docker 当前正在使用的存储驱动程序,请使用docker info看
对于Storage Driver线:
$ docker info
Containers: 0
Images: 0
Storage Driver: overlay2
Backing Filesystem: xfs
<...>
要更改存储驱动程序,请参阅新存储的具体说明
司机。某些驱动程序需要额外的配置,包括配置
添加到 Docker 主机上的物理或逻辑磁盘。
重要
更改存储驱动程序时,任何现有镜像和容器都会变为
无法。这是因为新存储无法使用它们的层
司机。如果您还原更改,则可以访问旧镜像和容器
同样,但您使用新驱动程序提取或创建的任何
无法。
相关信息关于镜像、容器和存储驱动程序overlay2存储驱动程序的实际应用btrfs存储驱动程序的实际应用zfs存储驱动程序的实际应用