Docker 存储驱动程序
Docker有多个存储驱动程序,允许用户使用底层存储设备。下表显示了不同的存储驱动程序以及用于存储驱动程序的技术。
技术 |
存储驱动程序 |
OverlayFS |
overlay or overlay2 |
AUFS |
aufs |
Btrfs |
brtfs |
Device Manager |
devicemanager |
VFS |
vfs |
ZFS |
zfs |
现在让我们讨论一下您将使用各种存储驱动程序的一些优点和实例
AUFS
- 这是一个稳定的驱动; 可用于生产就绪的应用程序。
- 它具有良好的内存使用率,有助于确保容器的平滑Docker体验。
- 应该考虑与此驱动程序相关的高写入应用场景。
- 对于平台作为服务类型工作的系统来说,它是很好的选择。
Devicemapper
- 这是一个稳定的驱动; 确保顺畅的Docker体验。
- 该驱动程序适用于测试实验室中的应用程序。
- 此驱动程序符合主要Linux内核功能。
BTRFS
- 此驱动程序符合主要Linux内核功能。
- 应该考虑与此驱动程序相关的高写入活动。
- 此驱动程序适用于维护多个构建池的实例。
Ovelay
- 这是一个稳定的驱动程序,它符合主要的Linux内核功能。
- 它具有良好的内存使用率。
- 该驱动程序适用于测试实验室中的应用程序。
ZFS
- 这是一个稳定的驱动程序,它适用于实验室中的测试应用程序。
- 它对于平台即时服务类型的系统工作很有用。
要查看正在使用的存储驱动程序,请运行docker info
命令。
语法:
选项:没有
返回值:提供有关Docker主机上安装的Docker组件的所有相关信息。
例子:
输出:
数据卷
在Docker中,您有一个可以跨容器共享的单独卷。称为数据卷。数据量的一些功能是
- 它们在创建容器时初始化。
- 它们可以在许多容器中共享和重用。
- 可以直接对卷本身进行任何更改。
- 即使在删除容器后它们也存在。
我们来看看我们的Jenkins容器吧。让我们做运行ocker inspect
,看看这个镜像的细节。我们可以发出<docker inspect
命令的输出写入到文本文件,然后相应地查看该文件。
sudo docker inspect jenkins > tmp.txt
sudo more 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位置,您将看到所有容器文件。
提示: 如果您运行上述命令后,没有查看到容器正在运行,那么可能是您要挂载的目录(/home/demo)docker没有权限执行,我的例子直接给完权限,运行sudo chmod 777 /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,运行docker inspect 容器id
,查看到“VolumeDriver”的值已经被设置成“flocker”
创建卷
可以使用docker volume create
命令预先创建卷。让我们更多地了解这个命令。
语法:
docker volume create --opt options volumename
选项:
- volumename - 这是需要创建的卷的名称。
- opt - 这些是您在创建卷时可以提供的选项。
返回值:
该命令将输出创建的卷的名称。
例子:
sudo docker volume create demo
在上面的命令中,我们创建了一个名称为demo的卷。
列出所有卷
可以使用docker volume ls
命令列出所有docker卷。
语法:
例子: