Docker 数据存储

存储驱动

Docker 有多个存储驱动程序,允许一个与底层存储设备一起工作。 下表显示了不同的存储驱动程序以及用于存储驱动程序的技术。

技术 存储驱动
OverlayFS overlay 或者 overlay2
AUFS aufs
Btrfs brtfs
设备管理 devicemanager
VFS vfs
ZFS zfs

现在让我们讨论一些我们将使用各种存储驱动程序的实例

AUFS

  • 这是一个稳定的驱动程序; 可用于生产就绪的应用程序。
  • 它具有良好的内存使用率,有利于确保容器的流畅 Docker 体验。
  • 应该考虑与此驱动程序相关的高写入活动。
  • 它适用于平台即服务类型的系统。

Devicemapper

  • 这是一个稳定的驱动程序; 确保流畅的 Docker 体验。
  • 该驱动程序非常适合在实验室中测试应用程序。
  • 该驱动程序符合主要的 Linux 内核功能。

Btrfs

  • 该驱动程序符合主要的 Linux 内核功能。
  • 应该考虑与此驱动程序相关的高写入活动。
  • 此驱动程序适用于我们维护多个构建池的情况。

Ovelay

  • 这是一个稳定的驱动程序,它符合主要的 Linux 内核功能。
  • 它具有良好的内存使用率。
  • 该驱动程序非常适合在实验室中测试应用程序。

ZFS

  • 这是一个稳定的驱动程序,非常适合在实验室中测试应用程序。
  • 它适用于平台即服务类型的工作系统。

要查看正在使用的存储驱动程序,可以使用下面的命令。

$ docker info

以下输出显示使用的主要驱动程序是 overlay2 驱动程序,并且根目录存储在 /var/lib/docker 中。

docker info 命令结果


数据卷

在 Docker 中,有一个可以跨容器共享的单独卷。 这些被称为数据卷。 数据卷的一些特征是 -

  • 它们在容器创建时被初始化。
  • 它们可以在许多容器中共享和重用。
  • 可以直接对卷本身进行任何更改。
  • 即使在容器被删除后它们仍然存在。

让我们看看我们的 Jenkins 容器。 让我们使用 docker inspect 来查看这个镜像的细节。 我们可使用下面的命令将 输出写入文本文件,然后相应地查看该文件。

$ docker inspect jenkins > tmp.txt

当我们使用 more 命令查看文本文件时,将看到一条为 JENKINS_HOME=/var/Jenkins_home 的记录。

现在假设我们想将容器中的卷映射到本地卷,那么需要在启动容器时指定 –v 选项。 一个例子如下所示

$ docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins 

-v 选项用于将容器中的卷 /var/jenkins_home 映射到我们的 Docker 主机上的位置 /home/demo

现在,如果我们在启动容器后转到 Docker 主机上的 /home/demo 位置,将看到那里存在的所有容器文件。


更改容器的存储驱动程序

如果想更改用于容器的存储驱动程序,可以在启动容器时进行。 这可以通过在使用 docker run 命令时使用 –volume-driver 参数来完成。 下面给出一个例子

$ docker run –d --volume-driver=flocker 
   –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

-volume-driver 选项用于为容器指定另一个存储驱动程序。

要确认驱动已经更改,首先让我们使用 docker ps 命令查看正在运行的容器并获取容器 ID。 所以,使用以下命令

$ docker ps

然后对容器使用 docker inspect 命令并将输出放入文本文件中。

$ docker inspect 9bffb1bfebee > temp.txt 

如果浏览文本文件并转到显示 VolumeDriver 的行,将看到驱动程序名称已更改。


创建一个容器卷

可以使用 docker 命令预先创建卷。 让我们更多地了解这个命令。

$ docker volume create –-name=volumename –-opt options

参数

  • name - 这是需要创建的卷的名称。
  • opt - 这些是您在创建卷时可以提供的选项。

例如:

$ docker volume create –-name = demo –opt o = size = 100m 

在上面的命令中,我们创建了一个大小为 100MB 的卷,名称为 demo。


列出所有卷

我们还可以列出 docker 主机上的所有 docker 卷。 下面给出了有关此命令的更多详细信息

$ docker volume ls

上述命令的输出如下所示

docker volume 列出所有卷

查看笔记

扫码一下
查看教程更方便