Docker-存储


存储驱动程序

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

技术 存储驱动程序
覆盖文件系统 覆盖或覆盖2
AUFS 奥夫斯
Btrfs 布尔特文件系统
装置经理 装置经理
虚拟FS 虚拟文件系统
ZFS 兹夫斯

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

AUFS

  • 这是一个稳定的驱动程序;可用于生产就绪的应用程序。

  • 它具有良好的内存利用率,有利于保证容器的流畅 Docker 体验。

  • 应考虑与此驱动程序相关的高写入活动。

  • 它对于平台即服务类型工作的系统很有用。

设备映射器

  • 这是一个稳定的驱动程序;确保流畅的 Docker 体验。

  • 该驱动程序非常适合在实验室中测试应用程序。

  • 该驱动程序符合 Linux 内核的主要功能。

Btrfs

  • 该驱动程序符合 Linux 内核的主要功能。

  • 应考虑与此驱动程序相关的高写入活动。

  • 该驱动程序非常适合维护多个构建池的实例。

奥韦莱

  • 这是一个稳定的驱动程序,并且符合 Linux 内核的主要功能。

  • 它具有良好的内存利用率。

  • 该驱动程序非常适合在实验室中测试应用程序。

ZFS

  • 这是一个稳定的驱动程序,非常适合在实验室中测试应用程序。

  • 它对于平台即服务类型工作的系统很有用。

要查看正在使用的存储驱动程序,请发出docker info命令。

句法

docker info 

选项

没有任何

返回值

该命令将提供 Docker 主机上安装的 Docker 组件的所有相关信息。

例子

sudo docker info 

输出

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

AUFS驱动程序

数据量

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

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

让我们看看我们的 Jenkins 容器。让我们进行docker 检查来查看该图像的详细信息。我们可以发出以下命令将dockerspect命令的输出写入文本文件,然后相应地查看该文件。

sudo docker inspect Jenkins > tmp.txt

当您使用more 命令查看文本文件时,您将看到一个条目JENKINS_HOME=/var/Jenkins_home

这是通过 Jenkins 镜像在容器内完成的映射。

数据量

现在假设您要将容器中的卷映射到本地卷,那么您需要在启动容器时指定 –v 选项。下面显示了一个示例 -

sudo 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参数来完成。下面给出一个例子 -

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

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

音量驱动程序

为了确认驱动程序已更改,首先让我们使用docker ps命令查看正在运行的容器并获取容器 ID。因此,首先发出以下命令 -

sudo docker ps

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

sudo docker inspect 9bffb1bfebee > temp.txt 

Docker 反对命令

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

驱动程序名称已更改

创建卷

可以使用docker命令预先创建卷。让我们详细了解一下这个命令。

句法

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

选项

  • name - 这是需要创建的卷的名称。

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

返回值

该命令将输出创建的卷的名称。

例子

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

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

输出

上述命令的输出如下所示 -

创建卷

列出所有卷

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

句法

docker volume ls 

选项

没有任何

返回值

该命令将输出docker 主机上的所有卷。

例子

sudo docker volume ls

输出

上述命令的输出如下所示 -

列出所有卷输出