00:01
欢迎大家继续收看上硅谷的Linux云计算视频。大家好,我是汪洋老师。那这节课呢,我们去学习doc的相关的数据存储。我们之前一直没有解决的一个问题就是在dock中的数据持久化的问题。大家也可以看的出来。当刀客没有做一些特殊的设置的时候,我们再去使用命令R-F的时候。它会把整个容器的叫做写入层给删除,对吧?那像我们对docker容器的一些修改呢,都会保存在写入层之中,那写入程的删除呢,也就意味着我们从启动到删除之间所经历的过程,保存下来的所有数据都已经消除。但是有些数据呢,是我们可能不太想去消除的,或者非常重要的一些数据,我们需要把它保存下来。那这种情况下,我们应该怎么办呢?
01:01
所以我们就需要借助到我们的数据存储这章的内容去实现。好,在数据存储里呢,我们分为三个片段,第一个就是数据卷的一些特性,怎么样去做数据存储或数据存储,它到底有哪些特点?第二个就是在容器中怎样去使用这些所谓的数据存储。第三个我们讲解一下它的相关的使用的一些存储的驱动。好,那我们先从第一个开始说,也就数据的特性对吧。那既然讲了特性的话,无外乎就那么几个对吧。那第一个就是刀客镜像,由多个只读层,多个只读层叠加在一起,这句话非常重要,对吧?那怎么去叠加呢?通过的是我们的UFS,也就是union union file system叫联合文件系统,对吧?好,启动容器时,Dock会加载只读镜象程,并且正向底部。顶部,顶部加一个读写成。
02:03
那这个就是我们今天所说的,可写成。好,那第二个如果运行到容器修改了现有的一个线程文件,那么读该文件会从读写成的下部只读层拷贝到读写成,该文件的主读只读版本依然存在,但是已被读写成中的该文件的副本所隐藏。刺激写实复制记者。这句话需要给大家好好的解释一下了,对吧?那在这里呢,会有这么一张图,类零,类一,类二这么三层,这三层呢,我们就把它假设为这三层拼接在一起,对于我们的上层的用户来说就是一个完整的镜像,那镜像里面的每一层呢,都不太一样,比如这一个文件在零里面,它写的是A,在上面呢就写了是D改为D,那这个呢,是在零里面是A,在类一里面没有修改,在类二里面变成了D,以此类推,那后面我们就不再去重复解释了,对吧?没有什么意义,好,那如果我们再拿这个镜像运行为了一个容器。
03:10
运行为了一个容器。在容器上部呢,它会加入一个可写成,可写成那但是可写成里面默认是空白的,对吧,它不包含下面的所有文件,那如果我想把这个文件给它修改怎么办呢?直接在可写成内部去修改。也就意味他先把这个文件拷贝至可写成,拷贝完成以后对可写中中的文件进行修改,并且修改完了以后文件它会把底层的文件给隐藏。也就意味着,如果我可写成里面有一个1.tit文件了,那下面镜像里面的1.t文件我就看不到了,我只看我可写成里的1.t文件。并且这个1.tt文件在修改的时候,它是先把镜像的1.tt文件拷贝过来以后再去打开修改的,也就意味着是显示复制。
04:09
这个特征是非常重要的。需要大家好好的把它给理解一下,对吧?好,那这是我们数据卷的一些特性。那我们为什么要采用数据卷呢?或数据卷有什么意义呢?对吧?那接下来我们继续往后看。好,第一个我们想要讲的就是关闭或重启容并重启容器,其数据不受影响,我们stop和start都不受影响,对吧?你只有把它R'M删除了以后,容器里的数据就会全部丢失。就像我们刚开始开头的时候也给大家说过,对吧,那在有些环境中它可能不太重要,比如iOS是一个容器,这个容器就运行iOS的,你说iOS里面有什么数据呢?也有对吧,它的一些什么持久化连接的一些模板啊,对吧,包括它的配置啊。
05:01
但是这个配置一般来说比较简单,对吧,哪怕丢失以后我还可以重新配置上,那如果这是一个数据库,买SQ的这么一个容器呢。有没有想过这个问题?我容器一删除,买SQ里的所有数据全部没了。那怎么办?那在这时候,我们就需要去采用我们的确的解决方案。这里需要大家注意一下,好,那你说为什么我不用我们的本机的一些文件呢?首先,我们需要知道一个问题。那第一个就是容器,它在运行的时候,它是先从镜像里引过来的,对吧,或者链接过来了,加一个可写神去得到运行状态。你说为什么不用我们的操作系统本身的一个根文件系统,原因是什么?
06:01
我们的容器是不是有自己的一套根啊?我们之前也说过对吧,它是通过我们的namespace名字命名空间把它给隔离开来的,跟我们的操作系统本身根本都不属于同一套,你让他怎么用啊。对吧。那你说那我不能再去引入一个镜像,让他们两个去共享吗?这是不是同一个道理啊,容器与容器之间,他们的目某个目录要去共享的话,那我们要采用的方式,它只能通过我们什么?就暂时我们能做的是不是只能通过比如在这边搭一个NFS。通过网络共享过来。是不是你只能采用这种画?两个容器之间能够直接互相共享对应对方的目录吗?咱们没讲过吧?所以针对以上问题,唯一的解决方案就是我们刚才所说的卷。
07:04
券是什么呢?你可以把它理解为在我们的宿主机上的某个目录与容器里的某个目录互相绑定。你访问容器里的某个目录,相当于访问的就是数主机的目录,访问数主机的目录,相当于哎,也看到了容器内部的目录。并且当溶剂删除以后。数组机的目录。默认是不存储的。那这样的话。我里面的一些需要去持久化保存的数据,是不是就已经留下了呢?那比如底下给了一个演示对吧,这里有一个容器。那并且有个目录叫挖下的lap下的dock目录,这是我们数组机或叫做操作系统。不是容器内部的哈,是我们的数字操作系统的这么一个目录。好,那。
08:00
在左边呢,它有两个目录。这是一个我们的。应该是阿帕奇的对吧,哇下的3W和Y加lab下的P。啊,Pup这么两个目录需要去持久化保存,里面的数据比较重要,对吧?那就可以与之对应到Y下的lab下的dock下的VFS下的D下的UD1UD2个目录与之相互匹配。那这样,如果有一天我把这个容器给删除以后,那我直接去访问我输入机的这么一个目录,两个目录就可以看到它持久化的保存目录,这就是卷。好,那穴呢,其实还是有。一定的含义的,对吧,就像我们看这张图,第一个就是W可以在运行容器时候完成创建及保定操作。也就意味着在我们刚才讲的这种环境下,是可以不需要人为去绑定的。
09:05
它是可以在去启动为容器的时候就会自动的与之对应关联。当然,这需要我们借助我们的do fair里面的一个。W,也就是之前我们跳过的这么一个语法去使用它,我们等会再去讲好吧,好。第二,W的初衷就是数据持久化,这个太好理解了,对吧?好,那在这里呢,有两个,呃,有一个容器的演示过程,也就是我们的初始化过程。首先进程呢,会把我们的整个文件系统分为两个部分,一个是跟部分,一个是我们的数据存储部分,如果是我们的根部分的话,是与我们的类。类,也就是可写层,这一层是可写成,需要注意一下,底下是我们的镜像对吧?好与之相互关联,那第二个数据层呢,是与我们的却相互关联,那这样的话,有一天我把容器删了,那我们的数据目录还在我们的卷中。
10:08
这就是我们整个wall的使用的意义,或者叫做它的使用用法。非常重要对吧,好,那其实对于我们的W来说呢,他也是有一定的分类的,在我们的W,我们把它分为两类,一个叫做什么,我们的。绑定券。一个叫做我们的。刀客的管理者。有什么区别呢?简单的给大家了解一下,或给大家解释一下。非常好理解绑定卷。是人为操作。您可以这样理解,人为操作的,我们需要输入对应的命令与之关联。刀客管理局是也需要人为去注释或叫去设置。但是一旦引导以后,一旦转换成我们的容器的时候,它就是刀客。
11:06
自己去管理的。也就是他自己会创建对应的目录,自己会与之挂载,这叫dota的管理键。还有一点区别就是绑定卷,也就人为操作,它可以是你的操作系统上的任何的可用目录空间。你说我在tab下有一个A目录,与容器里面的什么什什么目录与之绑定可以吗?可以,你说我在我们的什么UR local下的什么什么目录与字绑定可以吗?可以。都可以,但是容器的管理卷一般一般都会存在于瓦下的lab下的刀口目录下。基于不同的我们的。联合文件系统或叫存储引擎,它的目录也会有稍微的变化。到时候我们可以去看,但是都会在外的lap下的dock目录下。
12:01
这是我们数据卷类型的一个分类。好,那这节课呢,我们主要给大家讲解的是我们的数据卷到底有什么特点,以及什么是数据卷,以及数据卷的一个分类,对吧。那我们这节课我们就先讲到这里,我们下节课再见。
我来说两句