📜  Docker存储驱动程序(1)

📅  最后修改于: 2023-12-03 14:40:50.949000             🧑  作者: Mango

Docker存储驱动程序介绍

Docker存储驱动程序是用于将容器内的数据持久化到磁盘上的组件。Docker使用存储驱动程序来管理文件系统并在容器之间共享文件。它们为Docker提供了灵活性和可扩展性,使得用户可以根据需要选择最适合自己的存储驱动程序。

Docker支持的存储驱动程序

Docker目前支持以下的存储驱动程序:

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

不同的存储驱动程序对容器性能和可用性有重大影响。

存储驱动程序的选择

存储驱动程序的选择通常取决于应用程序的性质和需要。例如,如果需要高性能,可以选择使用overlay2。如果需要可靠性,可以选择使用zfs。

aufs
  • Aufs可以在不额外占用磁盘空间的情况下创建快照,并且与devicemapper相比,io性能更高。
  • 但是,在aufs中,重写只能在新文件中进行,这可能导致空间浪费。
devicemapper
  • 与aufs相比,devicemapper使用更少的内存,并且可以支持较大的镜像和存储。
  • 但是,由于使用了写时复制(Copy-on-Write)机制,因此在容器内进行大量I/O操作会导致性能下降。
btrfs
  • 与其他驱动程序相比,btrfs具有成本和性能之间的平衡,可以进行写时复制,因此在I/O密集型工作负载下表现良好。
  • 由于Btrfs依赖于内核模块,因此必须在宿主机中安装Btrfs模块。
zfs
  • ZFS是一种高级的文件系统,可以提供像快照,检查和复制等高级功能,因此非常适合需要数据保护和高可靠性的工作负载。
  • ZFS需要在宿主机上安装ZFS并提供额外的CPU和内存以进行操作。
overlay
  • 与aufs相比,高I/O小数据库的读写模式表现更好。
  • 但是,在重复的写入操作上Overlay的性能会下降,这意味着,在将一个或多个文件写入容器文件系统的过程中,可能会导致长时间的延迟。
overlay2
  • 从Docker 17.06以后,Overlay2被设置为默认的存储驱动程序,它取代了aufs作为推荐的驱动程序。
  • Overlay2是一个高性能的驱动程序,特别适用于小型和大型应用程序的读写操作。
vfs
  • VFS是一个基本的存储驱动程序,适用于开发,测试和单个文件的访问。
  • 由于其低性能和低效率,不推荐用于生产环境。
如何更改存储驱动程序

更改存储驱动程序之前,请注意当前驱动程序的影响,以及更改它可能导致的问题。

1.停止所有Docker容器

$ docker stop $(docker ps -a -q)

2.删除它们的存储文件

$ sudo rm -rf /var/lib/docker/containers/*

3.停止Docker守护进程

$ sudo service docker stop

4.编辑Docker配置文件

$ sudo vim /etc/docker/daemon.json

5.更改存储驱动程序的参数,如下所示:

{
  "storage-driver": "zfs",
  "storage-opts": [
    "dm.basesize=20G"
  ]
}

6.启动Docker守护进程

$ sudo service docker restart

7.检查新的存储驱动程序是否正在使用:

$ docker info | grep 'Storage Driver'
结论

存储驱动程序是Docker的主要组成部分,可以改变容器的性能和可靠性。这个指南介绍了常用的存储驱动程序,以及应该如何选择和更改它们。熟悉存储驱动程序的工作原理和如何更改它们,将有助于您提高容器的性能和可用性,避免可能的错误和问题。