00:00
欢迎大家继续收看上硅谷的Linux云计算视频。大家好,我是万安老师。这节课中呢,我们去学习一下容器中的数据卷到底怎样去使用。好,那话不多说,我们直接去看我们对应的代码对吧。好。在我们容器中使用我们的。数据卷呢,主要有这么几种方式,对吧,第一种呢,我们叫做。容器管理局。容器的制管理院是比较有特点的这么一种方案。那它是基于我们刀客管理的,但是在去写镜像的时候要去标识。你到底哪个镜像需要去我们的资管理?好,我们先看这一种方式。首先给大家演示一下对吧,我们先看一下当前有哪些镜像。那我看一下后台,我们先把后面的所有的容器都给删了,对吧。
01:10
好,我们再看一下当前有哪些镜像,我们就启动一些。首先我先启动一个我们的这里没有water press是吧?啊,有what press,我们先启一个word press。就叫word吧,比较简单,容易记忆对吧?好,拉的标签我就不写了,它默认补充的是不是依然是拉,这个应该都没问题了,对吧,我们就启动。好,第一个容器启动成功以后,我再起一个容器,比如起的是tomcat,这是我们自己当时做的这么一个镜像,没忘吧。好,启动成功,那我们do PS,我们看一下这两个容器都已经启动成功了,没问题,这个22和8080呢,是因为我们在刀飞中写了这么一个POS的这么一个声明,对吧,告诉你需要这么两个端口需要释放出来,当然它如果使用的是我们的net的方式,是host,也就是跟主机共享网络站的话,这两个端口也会被暴露出来,需要大家注意一下。
02:24
好,那接下来我们想讲的是我们当前的数据卷,对吧,那我们dock inspect我们看一下。看一下我们的tomcat。往上翻。我给大家找一下好,这里有个Mo,发现是空的。也就意味着当前并没有任何的数据券去使用或叫数据卷的挂载。那我们再看一下what。好,我们往上翻。
03:04
这里呢,会存在一个叫W姆的这么一个字眼,对吧,那在这里会有一个叫跟啊瓦加的3W加XL,这个大家都知道对吧,就是阿帕奇的站点所在目录。那在我们的新版中呢,还会与之皮影匹配,它与我们的数组之的某个目录与之挂载的对应信息,在这个版本中呢,我们没有看到对吧?好,那怎么去给大家演示一下它对应的目录在哪里呢?首先我们刚才也说过一个知识点了,那它的目录是在wa下的,Lab下的,Do下,那这里呢,会有一堆的目录,对吧,这里会存在一个WS目录,好,我们到W姆斯目录下,你会发现这里有很多的一些乱七八糟的一些目录。这个需要给大家说明一下了。首先。因为我们之前启动了非常非常非常之多的容器,有些容器呢,在启动的时候就会使用到doc的管理卷。
04:04
那这都是我们之前容器在使用到的一些刀客管理卷,那现在我们把它给清空,为了好更方便的去演示,对吧?那首先我们先把容器都给删了。好,删除完成以后,你会发现这些卷还在,也就意味着我们得到了一个关键点,就是当我们启用了我们的容器的字管理卷的时候,在默认删除容器的时候,这些管理卷并不会删除。不然的话,这些这些哪来的呢?很好理解对吧?好,那这是我们要得到的第一个关键点,需要大家注意一下,那为了后方便我们后面的实验的演示,我们先把把所有的容器全都给删除,把数据都给清了,对吧。
05:04
好,没了,那我们再去再去启动一下我们刚才启动的这么两个容器,Do wrong杠杠name word-D,放在后台运行使用的镜像是word press。还有一个就是我们的汤姆,看这两条命令应该不需要解释了,对吧,都用到现在了,那我们在iOS看一下。又出了一个目录。但为什么我现在启动了两个容器,只出了一个目录呢?原因就是我们在do中声明需要容器自管理卷呢?只有word press在他们看到我们在写dog了。是不是没有使用到什么所谓的容器字管理卷,所以它就不会与之创建。好,那我们看一下容器的字,管理员有什么特点,我们先进到这个目录下。有个that对吧,看这里是什么。
06:01
挺熟悉的对吧,应该是我们的。阿帕奇的网页吧,或叫做的页面吧。代码对吧,那我们去标识一下,比如他一个我的名字。打个标记对吧,那我们再进到容器内部exec-ST并以下的带起。进的是我们的word容器,好,那我们在iOS看一下。看到了吗?也就意味着是什么?如果我告诉这个镜像你需要自管理哪个目录的话,它就意味着在去启动容器到镜像的时候。它会把这个目录与我们的下的lab下的刀下的W模式创建一个随机目录与之挂载。那这样的话,如果里面我写了很多有意义的数据,比如我们写一个写一点数据对吧。
07:08
当然这里没什么意义,对吧,我们创建了一个,呃,100个这么一个T文件,我们退出,好,那我现在把容器删了,叫word。删除以后呢,你会发现这个数据依然在,看到了吗?依然在那这样的话,我的数据是不是就会得到保存了。这是数据有do的自管理,我们的卷的一个特性,数据卷的一个特性。那也就意味着,我们如果要自己去编辑对应的镜像的时候,我们怎么让它达到这么一个子管理卷呢?效果呢?对吧,这个很重要,那给大家做一下演示。首先。嗯,在这里呢,我们先给大家去写一个我们的刀吧,刀个看看我们看看有没有基础镜像。
08:07
这里有个圣诺6.8的基础镜像,对吧,官方的,那我们直接运营,它是运营不成功的原因是什么。他是不是没有对应的启动。脚本啊,对吧,必须有一个位于前台的工作进程,一般我们会用启动脚本去引导,或者用命令也行,对吧,都一样,好,那我现在要做两个不同的镜像,给大家看一下到底有什么效果。首先,我们先写个刀。好。我们再另起一个终端对吧。镜像用的是他放,这是我们的基础镜像对吧,然后呢,我们再去让让什么呢?我们run一下touch下的一个tab下创建一个1.tt文件,这个有什么作用啊。
09:03
后面我为了让他能够。位于前台工作,我是不是直接踏F这个1.t地文件即可,对吧?好,我们再让下跟下有一个叫date目录,麦克亚跟下有个带坦目录。好,那接下来呢,我们就CMDT-FTB下的1.kt文件。这里有没有用到我们的数据的管理,就是容器的自管理卷,对吧?我们保存退出好do build-T,比如就叫做T的冒号V1.0版本。当天的dog。MV。刀可刀,我们写的小文简写的对吧?好,我们写一个完整版本的,好,重来。
10:09
好,这个镜像就被做出来了,对吧?好,Do run,刚刚name,比如叫T,去掉T的一杠B方的后台运行,然后我们镜像名叫T的冒号V1.0启动dota PS-A,我们看一下看到了吗。Up状态对吧,原因是什么?我们在启动的时候是不是TF了,TF是不是放在前台的。这么一个使用命令回调进程对吧,所以它不会退出,那如果直接启动的话会退出,需要注意一下,好,那我们到个ESEC,我们进入到这个容器内部,我们看一下。进去以后我们到跟下的带一下,这里会有个目录对吧,我们踏一个一,就这就这样,仅此而已,对吧,那我们再到袜下的lab下的刀下的WS我们看一下。
11:04
这里还是只有一个数据卷,这个数据卷是不是我们之前word press的数据卷,也就意味着我自己做的这个镜像并没有新创建出来一个新的这么一个数据卷。那这种这种如果想去进行所谓的数据,数据保存的话,或者数据存储的话,我们必须要采用我们的。第二种,等会我们再去讲,我们现在讲的是我们的容器的管理卷,对吧?自管理卷好,那怎么让它引用到呢?这就需要借助到了我们的刀费中的,我们之前没有讲到另一个选项了,也就是我们的W。在哪这里?好,当时我们在讲刀语法的时候,是不是讲到了一个被跳过了对吧,我说我们后面再去讲,现在还听不懂,原因就在这里。在这里呢,我们有一个叫做W。
12:01
W,这个选项就是定义到底哪个目录需要被我们的容器式管理卷去创建对应的挂载点。那我们过来看一下能不能行,对吧,好。那我们签到,修改一下我们的word dog field,在dog中,我们下面加一句话,加一个wall。跟一下的data,我们保存退出。看明白不同点了吧,这个多了一个W了膜对吧,保存退出好,然后我们再去build一下。改成V2.0版本,也就是这个版本带了我们的容器管理卷的定义了,对吧。好,已经进行成功了,那我们do run杠杠name叫TEST2-D放到后台运行,那test冒号V2.0启动。然后我们去袜下的lab下的dock目录下的W姆斯目录下,看到了吗?这里多了一个了,那我们进C21157。
13:06
我们先来看一下这里是一个啊,进错了是吧。从时间也可以看出来,应该是这一个对吧,啊C88啊08C好。进来以后你会发现这里是一个空的,原因是什么?我们定的是这个,我们定义的是我们的跟下的data目录,跟下data目录本来就没有数据啊,所以一定是空的,那现在我再去进入到这个容器,我们看一下do e SEC-I,我们进的是test star,并下的flash。好,我们CD到边下的det目录下。我们去创建一些门店,比如创建的是一到66,这个一定不会重复对吧?好,那过来我们iOS我们看一下。
14:07
看到了吗?那这样的话。这个我们自己定义的,自定义的这么一个容器目录,它是不是已经被持久化了呢?看到了吧,非常好理解对吧,那这样的话,我们再去把这个所谓的test或TEST1。我们给删除以后,这个容器卷是不是依然存在啊。这就是怎么去定义我们的容器的字管理卷。以及。容器制管理这样的一些特性。需要大家注意一下。好。那又会有疑问了,那我每次都删除我们的容器的话,这些次管理卷都存在,并且不会删除。那这也太费事了,我没事,是不是要定时的过来清空啊?首先容器的字管理卷在我们定义镜像的时候就会去定义这个目录,就代表了这个目录下的数据是非常重要的,默认不删除这是一个合理选项,对吧?那如果这是一个MYSQL数据库,你默认删除还得了吗?
15:19
所以默认不删除是一个合理选项。但是如果我想删怎么办呢?其实命令里是有的,比如我们do run杠杠name起一个test杠地方台,后台运行叫test冒号V200版本。启动成功以后呢,这里又会多了一个圈对吧,三个了,那如果我们想删除容器的时候,一起把这个数据键给删除,加个杠V即可,Do run杠杠啊do m-F,杠F是强制删除对吧?加个V-V,我们删除的是泰达回车。那我们iOS看一下。看到了吗?
16:00
那这个九亿三的这个券,我们的泰大的。我们的持久化卷是不是就没有了,对吧?这是我们的第一种容器的自管理卷。好,那接下来我们继续往后看。第二种叫做绑定卷,也就是个人操作的,对吧,要借助的命令就是杠V,看到了吗?杠v host迪以及wall,也就需要我们去告诉他你的。主机的某个目录和我们的容器的内部目录,我们过来看一下,好,首先我们去docker run杠杠name。TEST1我们把后面的容器都给删了吧,容器是空的对吧?然后我们再到把下的LA下的刀下的W龙下,我们把这些也给删了,都让它变空都没了,对吧。好,那现在我去启动do run,杠杠name test,一杠地放大后台运行,Test的冒号为1.0,这个版本的容器是不带我们的容器是管理卷的,对吧?那我们iOS看一下当前没有。
17:16
那如果像这种类似的镜像,它不带容器制管理券,我又想让他用,怎么办呢?那就自己停价对吧,那比如我们再起一个叫T的1.1啊幺幺吧,杠V。比如我想在我们的本地的数主机的天下的带下。创建一个与之对应的管理卷,比如我们去跟下get一下,我们看一下,对吧,肯定是没问题的,好,那我继续往后写,那我们再重新倒个run一下。叫太子一杠V,我想把我的数主机的跟下的de与之到容器内部的跟下的data与之绑定,我们看行不行,对吧?飞车启动成功了,那首先我先到我们的数主机下的跟下的data创建一个我的名字。
18:12
创建成功以后,我们再进入到这个容器ESEC-it。叫test一并下的,BA进来以后呢,我们到他的根下的data,我们los看一下。说明什么?说明我数主机的根像的data与容器的内部的更像data是不是已经完成绑定,当我这里用了两个名字都是一样的,你说用不一样的行不行,完全没问题对吧?没什么影响。这是怎么去自己去定义容器启动的时候让两个不同的卷与之对应匹配。好,那又会来一个问题,对吧,如果如果。我既在代购费用中写了我们的W,也就是有声明了容器自管理卷的。
19:04
就是持久化目录,我又加了杠V自定义,它到底哪个会生效呢?我们看一下对吧,好,首先我们到挖下的lab下do下W了斯下下面是没有,里面没有任何数据的,对吧,那我们现在到wrong杠杠name。写的是泰大。然后杠V,我们把当前的根下的datat绑定到容器内部的datat,注意注意,我现在用到的镜像是test v2.0,也就是我们刚才做的带我们的W姆的这么一个版本,理论上这个data是不会被放在我们的这个目录中随便创建一个目录以及绑定,对吧?随机不能讲随便对吧,随机好,但是我现在又声明了,我需要拿根下的鱼值绑定,那这个目录里面的随机目录还会生出,还会还会产生吗?我们过来看一下启动。
20:05
哦,没有加杠地对吧。那我们就放着放着吧。好,那我们倒一下,One下的,Lab下的,刀下,乌下看到了吗?底下并没有任何。新建出来的随机目录对吧?好,那我们再到我们的更新下的data目录下,我再去创建一个我们的沈超老师,那do eec-IB下的BA好容庆明呢,叫我们的test,那我们CD到根下的de下,我们iOS看一下。看到了吗?也就意味着,当我们既自定义了你需要容器自管理的某个目录,又在启动的时候,去指定了我们的。自己绑定的券,那他会按照管理员的自绑定券先生效。
21:07
原因是这个优先级更大对吧?很好理解,那这是我们的自保定卷。好,我们把它给清一下,Do m-f do PS-I-Q。那这两个卷我们都已经讲完了,对吧,那我现在给大家先提个问题。如果我现在有两个容器,一个是T1,一个是T拉。他们想要。之间的某个目录进行共享。怎么做?有些人会说,哎,我现在T1里面。比如TEST1里面的data和TEST2里面的data需要数据共享,这个在我们的服务中很常见,对吧?那我们应该怎么做?有些人可能会说了,哎,我们可以在我们的这个DO1DO1中。
22:13
一镜像中我们就起一个NFS服务,然后在二中我去把它给呱拉,呱拉不就即可了吗?当这个不失为一种方式,对吧,那我们在学完今天的我们的管理卷以后,你是不还可以怎么做。我是不是可以拿容我们当前数五阶的某个目录,比如就叫跟下的data,我拿它跟它绑定,拿它跟它绑定,那这样的话,他俩目录之间是不是相当于也是起到了一个共享作用。这个很好理解吧。好,那我们过来试一下行不行对吧?好,Go wrong,杠杠name test,一杠D放到后台运行,Test冒号为1.0,我们就不使用我们的字管理卷了。当然如果想让它达到我们刚才的作用的话,需要加个杠V,对吧?自己去定义跟下的data容器下的data。
23:04
跟下来带好启动成功以后,我们再起个test star。与之一样对吧?好,那CD我们先do eec-it并下的。Bash。我们先进的是我们的呃TEST1吧,进来以后我们到我们的跟下的带下,我们去创建一个叫做呃李明老师明哥。好,我们退出,这是容器一里面的。那我们再进入到容器二,我们CD到带下。看到了吗?李明老师是不是已经出来了?那这样的话是不是就实现了容器之间的不同啊,容器之间的目录之间的共享作用,如果有多个目录,你加多个杠A是不是即可,但这样会借助到我们的数组机的某个目录,对吧?我们这里是不是借助到了我们的数组机的更新的date目录?
24:07
与之做交换对吧?好,那如果我既不想去介入到我们的数组机的某个目录,又想实现我们容器之间的共享,怎么办呢?那就需要有一个另一个命令了,叫union,叫联合卷,对吧,那也就意味着我在启动第一个镜像的时候。容器的时候,我可以在启动第二容器的时候告诉他你要使用第一个容器的,但是这个要基于我们的do里面的容器自管理卷啊。需要大家注意一下。也就意味着。如果你的。第一个镜像,呼叫启动容器的镜像,它里面没有定义哪个目录。需要去持久化,你是用不了这个UNUN的,因为他根本不知道你哪个目录需要去。调用。好,那我们过来看一下这个效果。
25:00
首先我们先把现在的所有的容器都给删除。我为什么会喜欢你呢?加一个啊好。CD到wa下的lab下的W啊,Do下的wall这里也是空的对吧?好,那我们现在Dora刚刚name。比如叫TEST2-D放大后端运行使用的镜像是test的冒号V2.0版本。那iOS这里已经出了一个容器的制管理卷了,对吧,我们再来一个test star,但是加一句话叫杠杠俄罗木斯啊放。从哪里来呢?从我们的TEST2容器里去回车。
26:00
好,少一个M对吧?好,那这样的话我们就已经启动成功了,那我们在los看一下还是一个卷,按理说不应该对吧,我们因为使用的是test的2.0镜像,2.0镜像的话,它是会自己叫容器制管理键,因为我们在到费中声明了我们的W,它应该会创建一个随机目录与之绑定。那为什么会这样呢?原因是你加了一句话叫w from ws from这个有什么含义呢?这个含义就是我们签启动的第一个。它会在我们的这个水晶目录下创建出来一个与根下的data进行绑定,对吧。好,那我在启动第二个容器的时候,既然我们写了W,它会自己去匹配,诶当前这个容器的挂力卷就是持久化目录卷是它对吧,那我就定位到他了。然后呢,我在这个容器里面,并且我有个声明的叫跟下的data需要去持久化,所以它就会两端一起匹配,还是那句话,如果想使用杠杆wall from的话,你的你的镜像必须要写了wall模式,Wall告诉他哪个目录需要持久化,对吧。
27:11
不然的话,如果这里产的是T1的话,他怎么知道什么目录与之相互匹配关联呢?这个应该很好理解对吧,那现在我们看看是不是像我说的这样,那do eec-IB下的BA。我们先到太子的一里。啊,Test的进来以后,我们到根下的data下,我们去创建一个我的名字,然后我们退出,然后到我们的TEST2中,那还是到他的get目录下。看到了吗?那这样的话,是不是既可以不借助我们的速度机,又可以完成容器之间的目录共享?好,那这个呢,就是我们的数据键在容器中的一些利用的方式。
28:04
还是非常非常非常非常非常非常重要的,对吧?好,那这节课我们就先讲到这里,好好的把它给做一些实验,那我们下节课再见。
我来说两句