Docker(七)--Docker数据卷管理及插件
创始人
2024-05-29 09:26:31
0

文章目录

  • 一、Docker 数据卷管理
    • 1.bind mount
    • 2.docker managed volume
    • 3.bind mount与docker managed volume对比
  • 二、跨节点存储
    • convoy卷插件


一、Docker 数据卷管理

在实际使用过程中,我们需要把容器和数据进行隔离,因为容器在使用过程中可能随时要进行销毁,但是数据要保留下来,所以我们要做数据的持久化。

为什么要用数据卷
docker分层文件系统

  • 性能差
  • 生命周期与容器相同

docker数据卷
mount到主机中,绕开分层文件系统
和主机磁盘性能相同,容器删除后依然保留
仅限本地磁盘,不能随容器迁移

docker提供了两种卷:
bind mount
docker managed volume

1.bind mount

bind mount

  • 是将主机上的目录或文件mount到容器里。
  • 使用直观高效,易于理解。
  • 使用 -v 选项指定路径,格式 :

在做实验之前先把不用的资源删掉:
在这里插入图片描述
创建容器并指定或创建文件:
[root@server7 ~]# docker run -it --rm -v /tmp/data1:/data1 -v /tmp/data2:/data2:ro -v /etc/passwd:/mnt/passwd:ro busybox
在这里插入图片描述
在这里插入图片描述
可以看到持久化到本机的目录中了。如果存在则直接挂载,如果不存在则创建。可以看到某些镜像已经写好了将数据存入哪里,那我们在创建容器的时候就必须写这个路径。
在这里插入图片描述

2.docker managed volume

docker managed volume

  • bind mount必须指定host文件系统路径,限制了移植性。
  • docker managed volume 不需要指定mount源,docker自动为容器创建数据卷目录。
  • 默认创建的数据卷目录都在 /var/lib/docker/volumes 中。
  • 如果挂载时指向容器内已有的目录,原有数据会被复制到volume中。

即只有在镜像构建时有VOLUME参数,使用 docker managed volume 创建容器时才会做持久化,不然不会作持久化的。
registry镜像有VOLUME参数,所以用此镜像做实验:
[root@server1 ~]# docker run -d --name web1 registry
[root@server1 ~]# docker inspect web1
在这里插入图片描述
[root@server7 ~]# cd “/var/lib/docker/volumes/387e9d97d18a2a31bc4b0efc07c39b44d047bac5722420bbfafa6f66d3778450/_data”
在这里插入图片描述
查询docker managed volume
在这里插入图片描述
清理所有数据卷,在清理前需要先删除容器,释放对数据卷的占用
[root@server7 volumes]# docker volume ls | grep -v DRIVER | awk ‘{system("docker volume rm “$2"”)}’
在这里插入图片描述
以上方式只能支持目录的挂载不能支持文件的挂载。
一般我们先创建一个卷:

[root@server7 ~]# docker volume  create vol1
vol1
[root@server7 ~]# docker volume  ls
DRIVER    VOLUME NAME
local     vol1
[root@server7 ~]# docker volume  inspect vol1
[{"CreatedAt": "2023-03-05T09:21:01+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/vol1/_data","Name": "vol1","Options": null,"Scope": "local"}
]

在这里插入图片描述
使用bind mount方式挂载数据卷
直接写刚刚创建的卷的名称,不需要写绝对路径,如果有的docker引擎会自动识别到:
[root@server7 ~]# docker run -d --name web1 -v vol1:/var/lib/registry registry
可以看到已经挂接在指定位置:
在这里插入图片描述
如果使用bind mount再挂接会覆盖,但是用docker manger不会。
还能在挂载时控制权限
[root@server7 ~]# docker run -d --name demo -v vol1:/usr/local/nginx/html:ro nginx
在这里插入图片描述
共享卷
[root@server7 ~]# docker create -v /tmp/data1:/data1:rw -v /tmp/data2:/data2:ro -v /etc/passwd:/mnt/passwd:ro --name datavol busybox

[root@server7 ~]# docker run -it --rm --volumes-from datavol busybox
在这里插入图片描述
==即bind mount方式是将宿主机路径目录下的文件覆盖到容器内,是以宿主机路径下文件为准。如果我们考虑容器内路径数据的话,最好用docker管理卷的方式。 ==

3.bind mount与docker managed volume对比

bind mount与docker managed volume对比
相同点:两者都是 host 文件系统中的某个路径。
不同点:如图
在这里插入图片描述
注:docker管理卷可以用上面说的先创建卷,再进行挂接的方式对目录进行权限控制

二、跨节点存储

需要卷插件作支撑

docker 卷默认使用的是local类型的驱动,只能存在宿主机,跨主机的volume就需要使用第三方的驱动,可以查看以下链接: https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins
docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。 https://docs.docker.com/engine/extend/plugins_volume/#volume-plugin-protocol
注:官方虽然提供了一些卷插件,但是不够全面,可以根据官方提供的API接口自己开发和docker相集成。
卷插件没有和docker引擎相集成,即它是第三方外部的插件,本身并不属于docker引擎的管理范畴,需要我们手动管理。当docker客户端向docker引擎提交需要挂载卷的请求时,docker引擎会去扫描缺省路径中的卷插件,扫描之后通过卷插件来完成数据的挂接。

在这里插入图片描述

  • Docker Plugin 是以Web Service的服务运行在每一台Docker
    Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。
  • Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省路径下查找Unix Socket文件,自动发现可用的插件。
  • 当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后端找到插件对应的 socket 文件,建立连接并发起相应的API请求,最终结合Daemon自身的处理完成客户端的请求。

convoy卷插件

实验之前先把server1、server2上不用的容器、网络、数据卷全删掉。
支持三种运行方式:devicemapper、NFS、EBS。
以下实验使用nfs方式。
下载软件:https://github.com/rancher/convoy/releases/download/v0.5.0/convoy.tar.gz
在所有节点提前挂载NFS存储。
此插件再使用前需要在底层安装NFS文件系统。我们需要在两个节点上需要一个共同的NFS文件系统:

未完待续~


相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...