Docker 存储
存储驱动程序
Docker具有多个存储驱动程序,允许用户使用底层存储设备进行工作。以下表格显示了不同的存储驱动程序以及用于存储驱动程序的技术。
Technology | Storage Driver |
---|---|
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 info
选项
无
返回值
该命令将提供有关安装在Docker主机上的Docker组件的所有相关信息。
示例
sudo docker info
输出
下面的输出显示使用的主要驱动程序是 aufs 驱动程序,并且根目录存储在 /var/lib/docker/aufs 中。
数据卷
在Docker中,您可以有一个可在容器之间共享的独立卷。这些被称为 数据卷 。数据卷的一些特点如下:
- 创建容器时会初始化数据卷。
- 数据卷可以在多个容器之间共享和重用。
- 可直接对数据卷进行更改。
- 数据卷在容器删除后仍然存在。
让我们看看我们的Jenkins容器。让我们执行 docker inspect 命令以查看此镜像的详细信息。我们可以使用以下命令将 docker inspect 命令的输出写入文本文件,然后相应地查看该文件。
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选项将容器中的卷映射到Docker主机上的位置,该卷是 /var/jenkins_home ,而我们的Docker主机位置是 /home/demo 。
现在,如果你启动了容器之后,打开Docker主机上的 /home/demo 路径,你会看到所有的容器文件都在那里。
更改容器的存储驱动程序
如果您想要更改容器使用的存储驱动程序,可以在启动容器时进行。可以通过在使用 --volume-driver 参数时使用 docker run 命令来实现。以下是一个示例:
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 inspect 并将输出保存到文本文件中。
sudo docker inspect 9bffb1bfebee > temp.txt
创建卷
可以使用 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
输出
上述命令的输出如下所示 –