docker存储技术原理和操作介绍——docker开发教程

上一章docker开发教程请查看:docker容器链接使用和操作步骤
这一章我们开始讨论docker存储技术相关的原理和操作。
一、存储驱动程序Docker有多个存储驱动程序,允许一个驱动程序处理底层存储设备。下表显示了不同的存储驱动程序以及用于存储驱动程序的技术。

技术 存储驱动程序
OverlayFS overlay或overlay2
AUFS AUFS
BTRFS brtfs
设备管理器 设备管理器
VFS VFS
ZFS ZFS
现在让我们讨论一些你会使用不同的存储驱动程序的实例 –
AUFS
  • 这是一个稳定的驱动程序,可用于生产的应用程序。
  • 它具有良好的内存使用量,是确保顺序使用docker容器而体验良好。
  • 没有与此驱动程序应考虑相关的高写入活动。
  • 这是很好的为它们的平台作为一种服务型的工作体系。
Devicemapper
  • 这是一个稳定的驱动程序,确保docker平稳的体验。
  • 此驱动程序有利于在实验室中测试应用程序。
  • 此驱动程序是与主要的Linux内核功能在同一线上。
BTRFS
  • 此驱动程序是与主要的Linux内核功能线。
  • 没有与此驱动程序应考虑相关的高写入活动。
  • 此驱动程序是使得维护多个构建池情况良好。
Ovelay
  • 这是一个稳定的驱动程序,它是与主Linux内核的功能线。
  • 它具有良好的内存使用情况。
  • 此驱动程序有利于在实验室中测试应用程序。
ZFS
  • 这是一个稳定的驱动程序,它有利于在实验室中测试应用程序。
  • 这对于系统是很好的,其平台作为一种服务型的工作体系。
要查看正在使用的存储驱动器,执行docker info命令。
Docker info命令语法
docker info

返回值:该命令将提供安装在docker主机的docker组件的所有相关信息。
Docker info使用例子
sudo docker info

下面的输出显示所使用的主要驱动是AUFS驱动器,以及根目录被存储在/var/lib/docker/aufs中
docker存储技术原理和操作介绍——docker开发教程

文章图片
二、数据卷在docker你可以跨容器共享一个单独的卷,这些被称为数据卷,一些数据卷的特点是:
  • 创建容器时被初始化。
  • 包括许多容器中它们可以共享和重复使用。
  • 对卷本身的任何更改都可以直接进行。
  • 即使在删除容器之后,它们仍然存在。
让我们看一下我们的Jenkins容器,我们执行docker inspect检查看到这个镜像的细节。我们可以使用下面的命令写入docker inspect的输出命令到一个文本文件,然后相应地查看该文件。
sudo docker inspect Jenkins > tmp.txt

当你使用more查看命令文本文件,你会看到一个条目JENKINS_HOME =/var/Jenkins_home。
这是经由Jenkins镜像的容器内进行所述映射。
docker存储技术原理和操作介绍——docker开发教程

文章图片
现在假设希望将容器中的卷映射到本地卷,那么在启动容器时需要指定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存储技术原理和操作介绍——docker开发教程

文章图片
现在如果在启动容器之后转到Docker主机上的/home/demo位置,就会看到所有的容器文件。
三、更改存储驱动器的容器如果希望更改容器使用的存储驱动程序,可以在启动容器时这样做,这可以通过在使用docker run命令时使用卷驱动程序参数来实现。下面给出了一个示例:
sudo docker run -d -volume-driver=flocker -v /home/demo:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins

卷驱动程序选项用于为容器指定另一个存储驱动程序。
docker存储技术原理和操作介绍——docker开发教程

文章图片
要确认驱动程序已经更改,首先让我们使用docker ps命令查看正在运行的容器并获取容器ID:
sudo docker ps

然后使用docker inspect检查容器,并使用该命令将输出放到文本文件中。
docker存储技术原理和操作介绍——docker开发教程

文章图片
如果浏览文本文件并转到写有VolumeDriver的行,你将看到驱动程序名称已经更改。
四、创建卷可以使用docker命令预先创建卷,让我们进一步了解这个命令。
语法如下:
docker volume create –-name=volumename –-opt options

选项
  • 名称– 这是一个需要创建的卷的名称。
  • 选择– 这些选项可以在创建卷时提供。
返回值:该命令将输出卷的名称创建。
sudo docker volume create --name=demo --opt o=size=100m

在上面的命令中,我们创建了一个大小为100MB、名为demo的卷。
五、列出所有卷还可以列出docker主机上的所有docker卷。关于这个命令的更多细节如下所示:
docker volume ls

该命令将输出所有的docker主机上的卷,使用例子如下:
sudo docker volume ls

【docker存储技术原理和操作介绍——docker开发教程】上述命令的输出如下所示:
docker存储技术原理和操作介绍——docker开发教程

文章图片

    推荐阅读