Docker(七)--Docker数据卷管理及插件

news2024/11/24 18:51:43

文章目录

  • 一、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文件系统:

未完待续~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++:set和map(模拟实现)

目录 关联式容器 键值对 树形结构的关联式容器 set的介绍 set的使用 map的介绍 map的使用 multiset的介绍 multimap的介绍 底层结构 AVL树的概念 AVL树节点的定义 AVL树的旋转 左单旋 右单旋 先右单旋再左单旋 先左单旋再右单旋 模拟实现AVL树 红黑树 红黑树…

【C++】30h速成C++从入门到精通(stack、queuepriority_queue以及deque介绍)

stackstack的介绍https://cplusplus.com/reference/stack/stack/?kwstackstack是一种容器适配器,专门在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特…

详解一致性哈希算法

在单机系统中,所有的数据都存储在同一个服务器下,当数据量越来越多的时候,超过了单机存储容量的上限,就需要使用分布式存储系统,在分布式存储系统重,数据会被拆分到不同的存储服务下,减少单机服…

[数据结构]:12-快速排序(顺序表指针实现形式)(C语言实现)

目录 前言 已完成内容 快速排序实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-PSeqListFunction.cpp 04-SortCommon.cpp 05-SortFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容,除其中使用到C引用外,全为C语言代…

【Linux】canal1.1.7同步MySQL8.0.3和Redis

目录前言一、MySQL8配置1. 修改my.cnf2. 重启mysql3. 建用户、授权二、Canal服务端配置1. 下载2. 修改配置3. 启动服务与验证三、Canal客户端编写1. yml配置文件添加canal服务端配置信息和Redis信息2. 配置pom文件3. 代码4. MySQL建表storage.storage5. 启动客户端与验证参考前…

中微8S6990使用过程的一些记录--GPIO初始化、定时器、PWM、ADC、休眠等外设的配置和使用

前言 最近把一款产品的代码从新唐MS51移植到了中微8S6990平台上,记录下移植过程遇到的各种情况。 目录前言定时器初始化、中断服务函数GPIO配置ADC模数转换初始化PWM初始化Main函数休眠的一些注意事项最后定时器初始化、中断服务函数 void TMR0_Config(void) {/*(…

keepalived+nginx 双机热备搭建

keepalivednginx 双机热备搭建一、准备工作1.1 准备两台centos7.91.2 nginx 与 keepalived软件 双机安装1.3 ip分配1.4 修改主机名1.5 关闭selinux(双机执行)1.6 修改hosts(双机执行)二、安装keepalived2.1 执行一下命令安装keepa…

MidiaPipe +stgcn(时空图卷积网络)实现人体姿态判断(单目标)

文章目录前言Midiapipe关键点检测stgcn 姿态评估效果前言 冒个泡,年少无知吹完的牛皮是要还的呀。 那么这里的话要做的一个东西就是一个人体的姿态判断,比如一个人是坐着还是站着还是摔倒了,如果摔倒了我们要做什么操作,之类的。…

【模型复现】-alexnet,nn.Sequential顺序结构构建网络

深度卷积神经网络(AlexNet) 在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机。虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实数据集上的表现并不尽如人意。一方面&#…

第五章 事务管理

1.事务概念 *什么是事务:事务是数据库操作最基本单元,逻辑上是一组操作,要么都成功,要么都失败 *事务的特性(ACID):原子性、隔离性、一致性、持久性 2.搭建事务操作环境 *模拟场景&#xff…

uart串口接收模块

uart串口接收模块 1、UART(异步串行接口) 串行通信:指利用一条数据线将资料一位位的顺序传输。   异步通信:以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的,然而在同一个字符的两个相邻位代…

【微信小程序】-- 页面事件 - 下拉刷新(二十五)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

高盐废水除钙镁的技术解析

高盐废水指含有机物和至少总溶解固体(totaldissolvedsolids,tds)的质量分数大于3.5%的废水,具有水量大,无机盐离子k、na、ca2、mg2、cl-、so42-等含量高,水质水量变化大,成分复杂,难生化降解等特…

2023年中职网络安全竞赛——CMS网站渗透解析

需求环境可私信博主 解析如下: CMS网站渗透 任务环境说明: 服务器场景:Server2206(关闭链接) 服务器场景操作系统:未知 1.使用渗透机对服务器信息收集,并将服务器中网站服务端口号作为flag提交; Flag:8089

华为套件生态

华为套件生态前言蓝牙设备华为耳机华为鼠标智慧互联超级终端多屏协同远程访问文件共享华为电脑管家我的设备控制中心前言 华为的手机、平板、电脑、耳机、手环、手表等设备可以组成华为生态。以下分享一些生态体验。 蓝牙设备 华为耳机 快速连接 在手机/电脑附近打开华为耳…

里奇RIDGID管线定位仪/探测仪维修SR-20 SR-24 SR-60

美国里奇SeekTech SR-20管线定位仪对于初次使用定位仪的用户或经验丰富的用户,都同样可以轻易上手使用SR-20。SR-20提供许多设置和参数,使得大多数复杂的定位工作变得很容易。此外,当你在不复杂的环境下完成些基本的定位工作时,这…

软件测试7

一 CS和BS软件架构 CS:客户端-服务器端,BS:浏览器端-服务器端 区别总结: 1.效率:c/s效率高,某些内容已经安装在系统中了,b/s每次都要加载最新的数据 2.升级:b/s无缝升级&#xff0c…

【Maven】(五)Maven模块的继承与聚合 多模块项目组织构建

文章目录1.前言2.模块的继承2.1.可继承的标签2.2.超级POM2.3.手动引入自定义父POM3.模块的聚合3.1.聚合的注意事项3.2.反应堆(reactor)4.依赖管理及属性配置4.1.依赖管理4.2.属性配置5.总结1.前言 本系列文章记录了 Maven 从0开始到实战的过程,Maven 系列历史文章清…

三天吃透SpringMVC面试八股文

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

【操作系统原理实验】命令解释器模拟实现

选择一种高级语言如C/C等,编写一类似于DOS、UNIX中的命令行解释程序。 1)设计系统命名行提示符; 2)自定义命令集(8-10个); 3)用户输入help命令以查找命令的帮助; 4)列出命令的功能,区分内部命令…