00:00
好,同学们,接下来我们就要对多开发常用的保留字给大家做一下说明,那么在前面的解析和说明过程当中,那么说难听点,我们要编写多开费尔就使用它的语法规则,用这些命令编写出一个一个的指令,完成我们最终交付的镜像,那么这些保留的指令是多克菲尔的灵魂,是重中之重,请同学们务必搞懂。那么在这儿我就已经把。主流常见常用的镜像和相关的细节将会给同学们做一个一一的介绍,那么这个请大家务必跟着下来。那么理论。实操小总结,依旧三板斧,好,那么来,首先这个多开饭啊,那杨哥我们还没见过呢,你先别给我那个比较枯燥的来介绍这种英语单词,咱们至少服装我也知道来自于哪儿,那啥意思啊,那下面。走。分。走的原则,我先给大家介绍,那么先看看,那么大家都清楚啊,我们在这儿的时候,是不是有一个东西叫多开哈,我们搜他K了以后,那么弟兄们都晓得这个是什么,HUB上面是不是装镜像的,那么这些镜像是哪来的?那么镜像它对应的文件就是一个一个反解析里后就是一个个的do开fair。
01:18
OK,那么来,兄弟们。他直接呢告诉你啊。我们这个在官网上HUB,官网上这个to这个镜像,你可以去这块去看,你看这是不是叫do的连接,那么搁到这儿了以后,由于这个GIHUB啊,打开呢,非常非常的慢,那么杨哥呢,就提前先把它打开了,比如说我们的他们看的最新版是12,我们继续JAVA8的话,那么大家请看。来第一行,诶这有个。好,那么兄弟们这儿是不是也有一个符肉,没问题吧?那么先来看看一个多开范,它到底是干一些什么事,那么红色的就是它所谓的关键保留字,那么这有什么env啊,什么work DR啊,然后呢,Run啊等等等等,以及当然中间这些注释你可以无视么?它中间呢,就编写了一堆堆的命令和指令,最终大家请看后面,诶,暴露出一个端口叫8080,然后。
02:14
Command一般就是指命令,那么卡特琳a.sh run,哎,至少到158行,这你应该明白,那么换句话说,它的意思就是你在官网上我们就不会给你解释什么,他们看了对吧么?他说你怎么用,你怎么使用这个镜像,那么大家请看,他告诉你运行默认的他们server,相当于你这儿一启动,屁股后面其实就跟着一个是吗?卡点run哪来的?就是这个ER fair,它后面也跟着的,那么你凭什么可以?通过8080端口去访问doer上的这个toca的实容器,实例也告诉你了,哥们,我对外暴露的端口就是8080,那么粗浅的看一下我们就会明白,原来我们每一个镜像其实到后面都会有一个什么多开饭药作为理论的支撑,那么这一副药怎么来的?当然有药方,那么这个药方谁开的?当然是个老中医,OK,那么所以说呢?
03:07
要翻抓药,最后出成品,这么一步一步,那么所以说我们这儿明白了以后,我们接下来我们大吃啊,大家不要怕啊,你不要担心,我靠,我的妈呀,这个我要写这么复杂的多开呢,100多行,不用去掉注释和与你相关的,基本上你只要能看得懂,能够照猫画虎,OK,照葫芦画瓢就行了,都是一些脚本参数,都是一些脚本文件,好,那么同学们开工第一个参数,腐肉。挺好,基本上都出现在什么?我们多开的第一行,代表你需要你现在心要构建这个镜像来自于哪,你的源头来自于哪,说白了就是你继承的父类基础镜像,OK,那么来,兄弟们。当前你要产生的这个新的镜像基于哪一个镜像,我来自于哪?那么指定一个,一般是指定一个已经存在的镜像作为模板,然后我们在这个的基础上再开始呢后面的构建,所以说一般第一条都是符,那么来同学们请看,他就告诉你假设啊,他们开这个,呃,镜像的话呢,它这个doer第一行是不是来自于亚马逊。
04:18
这样的一个镜像版本号是八号,然后在继承了别人的基础上面,我又添加了一些其他哪些功能,好,这是我们的第一个,那么第二个。Maintainna维护者什么意思啊?就是这个镜像谁做的,可以留下作者的什么名字啊和邮箱地址,好好说过第三个,那么大家请看这儿是不是也有一种东西叫你看叫什么set什么什么什么之类的,这个就是指什么?在我们这个do里面写好这个run就是代表在构建的时候就会执行这个命令,那么大家请看容器构建的时候什么叫构建。啊,就是这儿啊,再多说一嘴。我们在这儿的时候,是不是有一个东西叫build,意思就是说我只要到第二步build的时候,就会去读取你多里面用run关键字所编写的一些指令和命令。那么来。
05:11
容器构建时需要运行的命令,它有两种格式,格式啊,一种叫需要,一种叫EXE,那么假如说这样啊。Run直就是命令函的命令,等同于在终端操作的需要命令啊杨哥。嗯,你把官网翻译给我,我也看不懂,看着我给你说人话,那么弟兄们我们都晓得啊。以前我们在这儿U班图,我们在不含有的这个时候,我们是不是要多开,最终要卡密塔,我们这个时候是不是在当前的这个不含有的这个镜像里面,我们干一件什么事,什么apt还记不记得,相当于说就是我们的亚M安装杠y vim,类似于这样,那么相当于说如果说我现在就告诉你,我在这个文件里面,我现在。干嘛装一个vim的功能,那么现在相当于怎么编写,那么这个时候就是run。
06:07
青岛。那么亚姆安装。那么英斯多你要安装一个什么东西,安装一个vim。明白了吧,那么相当于说这一行就在这一个多开的文件里面,那么到时候我1BUILD1构建的时候,我就晓得啊明白了这个哥们。然后呢,继承了某一个镜像,在这个镜像的基础上,现在他需要。用run这种命令,然后呢,来运行这么一个。加强的功能安装VI,你看是不是在终端操作的需要命令,类似于这样,OK,能理解了吧,当然暂时不理解,不怕,后面我们有案例,一看就懂,不难啊,那么第二种呢,格式呢就exec,那这个呢,我觉得呢是有点难受啊,那么。他用了这么一个有点类似于阶层串二啊,这样的一个组合性的命令,命令参数一参数二,那么run这么一个,一个等价于run这么一个动作,OK,好,那么各位同学,那么这块的话呢,是两种,那么当然就看你了啊,我可能个人的话喜欢用这个,用这个多一点,那么你非要用这个也可以有的,你那么所以说记着乱命令就是在构建的时候直接运行,那么。
07:19
第四个。不用多说吧,当前容器对外暴露出的端口还记不记得我们是不是讲过什么小P和大P的端口映射,哎,好,不废话,那么这叫什么?Work dir代表什么?指定。在容器创建以后,默认终端,默认登录,进来的工作目录就是一个落脚点。那什么意思呀,那么大家请看啊,我当场给你演示啊,那么兄弟们。Do,那么我这run干it,比方说U图。那么这个时候啊,我们。我们都晓得,如果我运行成功以后,它这是不是给我返回,大家请看这是什么。默认终端默认登录进来的一个工作目录,什么落脚点,那么现在我进入以后,PWD大家请看什么意思啊呀,假设U班图这个镜像你运行成一个容器,你用了it这种模式,你进去登录,登录在什么地方,U班图的根目录下面,OK,那么我的落脚点就是我的根目录。
08:17
好,那么这儿退出去,那么do images,那么假设我现在do。Run-it我现在就运行这个啊呃,他们看八这个这这这个啊,那么好兄弟们。粘贴。那么好,那么当然啊,这个的话呢,我们呢,嗯,直接呢,干小P8080冒号8080啊,一般他们开头配个端口,但是注意其实他是不用加这个的,我故意的啊,那么大家请看一下。有没有发现他登录了以后,登录到什么地方,是不是user local他们这个路径,哎,刚才U班图是直接登录到根目录,而我们现在运行的这个镜像,他们K8是直接登录到什么user local他们K,哎,那么它为什么会有不同的落脚点不同的。
09:09
登录以后的地址呢,就是这个work DR,就是你指定登录终端以后的落脚点,哪个目录好,那么这个是我们的什么。第五个,那么下面user什么意思啊。指定该镜像以什么样的用户去执行,如果都不指定,默认是root,那么一般我们都不指定啊,不用去在那个镜像里面去搞一个什么权限,没必要啊,所以说呢,这块过,那么下面这个叫什么env,那么再来看看我们的他,它是不是也有env这么说能跟上,那么大家看上面是不是也有沃克Di啊,哎,卡特琳娜home是哪一个,你看你配的是哪一个,哪一个就能看到那么一样。对比着下来,它有没有认为也有这个叫什么运行时环境好,作为一个环境的配置,那么用来在构建镜像过程当中设置我们的什么环境变量,那么弟兄们请大家看一下啊,比方说因为TV间指对我的意思就是说这个环境变量可以在后续的任何乱指令中使用啊,RA令我们后面说啊,那么现在它的意思就是说我设立一个环境变量,比方说叫MY。
10:16
我默认这个past叫user my test,那么假设我work there。到了引用这个东东,那么相当于说我一登录的时候是不是就可以落在user my test这个路径下面,那么这样呢,其他指令当中是不是就可以直接引用这个环境变量,说难听点就是你在前面先定义了,后面我就可以引用,那么回到我们他们cat官方的这个参考,那么大家请看,我设置了一个环境变量叫卡塔,这个是key value,叫什么登录user local,他们看到刚才我们是不是演示过就可以登录user local,他们看到为什么?就是因为这个里面做了这个设置,然后完了以后大家请看。Work DR,我登录终端以后的落脚点是哪个,引用了cat特琳home cat琳home哪一个就是user local,所以说最终我们就是登录user local,他们开头我相信到这儿我说清楚了吧,OK,好,那么接下来兄弟们这个呢,就是我们的登录目录。
11:16
Env和work DR一般他们两个会常用。那么下面最后这个和。这个啊,这个都好说,这个可以提前说,什么意思啊,容器卷用。不用多废话了吧,意思就是什么,相当于我们岗位。能理解,那么只不过这块不叫干,为了写了个volume,用这个单词代表我们的容器卷,一说就秒懂了。哎,好,那么下面重要的是第一组。第二组这两个命令听好,一个叫A,一个叫copy,它们两个一样,那么这个copy还记不记得以前我们在讲容器的基本命令的时候,我们学过一个命令叫多开copy。把容器内的。
12:01
路径和主机的可以做个关联拷贝,这波能理解吧,它呢作用类似,那么现在啊先看一下。这两个一般用哪个呢?我习惯用ad,它跟copy有点类似,来。将宿主机目录下的文件。拷贝镜镜像,且会自动处理URL和解压踏压缩包,那么假设啊,这个A的意思就是什么?Copy加解压两个。命令的合体,那么大家请看啊,我们这小总结的时候,这是不是有个ad听懂了吧,那么这相当于说我可以把某一个速度机。某个路径下的一个文件拷贝进我们的镜像里面,且能够解压,那比如说啊,我要在我这个镜像里面装一个JDK8,那么这个JDK8比方说它是个JAVA8点t.GZ这么一个压缩包。那么我就可以把它从。
13:02
宿主机上拷贝进我们的镜像,并自动给它解压,所以说A是什么copy加解压OK,好,那么这个copy呢?类似ad拷贝文件和目录到镜像中,那么将从构建上下文目录中的原文件复制一份。到我们的目标路径,那么基本上它做的作用就是copy原到目的原文件目的路径,OK,那么好了,那么这个呢,很简单,类似于我们以前讲的多卡CP这个命令,那这个呢,要比A要比copy强大一些啊,我一般习惯的是用这个啊,那么这个就看你要不要解压文件,其实两个都具备,将本宿主机上的东西弄进我们的镜像里面,好,那么这个。容器卷说过了,那么最后这有个CMD和entry point,那么这两个。稍微费点事,那么同学们打起精神把这个听完,首先先看他们cat。大家告诉我,他们看到最后是不是就暴露了8080端口,而且告诉你这个镜像你打包完成以后一运行。
14:07
按照这个镜像模板来做容器的话,它要执行的命令就是看Li点干嘛,Run意思就是什么启动他们K听懂了吧?那么好,这个时候请看,先来看。CMD指定容器什么什么什么什么什么启动号,他要干的事情,那么就像这个他们看现在相当于说什么暴露出8080端口,这儿就是把卡特那启动么,相当于我后台启动了以后,你呢,静静的等着你给我部署我那只他们cat猫,如果你反问local的8080那只他们cat猫是不是就出来了,那么相当于说这个它就。干嘛?不做什么太多的事情,但是有些时候我们启动了以后,大家请看。是容器启动命令CMD指令格式和什么run是相似啊,也支持需和ex ec,那么就是这种带中括号像数组一样的,OK,那么大家请看CD参数一参数二,注意它这有句话,在指定了entry point指令以后用CMD。
15:05
指定具体的参数,相当于entry point,只要有的话,Command就变成给他传参数了啊,这先提一嘴,待会我们详说,那么请大家看眼。他这儿是这儿啊。多中可以有多个command指令,就是代表你。启动了以后你要干什么事儿,那比如说我们在这块就是运行完了以后,就是告诉你按照上面的多开菲尔给我把他们开的这个镜像启动,我后面没加什么佐料了,没加什么参数了,起动就完了,这是简单的,可问题是。它可以有什么多个command指令,但只有什么最后一个声效,OK,有点类似于最终那个指令,永远是最后一行,它会把前面的那些呢覆盖,然后呢。Come on的会背多开run之后的什么参数替换,哎,组在这,你杨哥有点糊涂,我们别,别着急,马上。
16:01
我们参考他们cat的多演示来讲解啊。官网最后一行的命令是不是暴露出8080端口command就这么个东东,没问题吧,相当于说我这儿啊。执行了以后。没问题啊,那么相当于说这块执行,这个就是我最后一行就是你启动他们看就行了,那假设啊,你又加了一些别的,就有可能把这条命令呢。给它覆盖了,它可能会不生效,那么来同学们能不搂一眼啊?现在啊。Do PS啊好,没有什么运行那么来。我们来演示一下啊。Docker。Images,那么do ex e。杠it,请看我案例演示,那么兄弟们,我们启动这个,他直接带猫的这个OK吧,那么大家请看啊,我现在是不是直接让你运行。这一波能跟上那么干屁8080冒号。
17:03
8080,那么对应的。我这个后面是不是什么都没有命令了。对吧,Run后面是不是。这个啊,抱歉啊。都看。这波没问题吧,那么相当于说多杠it-P8080启动这个镜像,那么相当于说这个镜像,它最后就是告诉你卡特琳娜。给我启动8080端口暴露服务,可以反问完活了,那么这个时候同学们唯一运行你晓得的。这个是我们最经典的看到了什么,Run了一个镜像,那么他们大家请看卡特在这块,那么好了,这个时候请看local在我们这儿,8080弟兄们。这只猫如果不出意外,是不是他们看着8053这个版本直接出来了,到这儿OK,那么一切都是是吧,合法合规,严丝合缝的,没什么好说,对得上我们的逻辑,因为你最后一行就是启动给他们看。
18:01
接下来看着我干坏事儿。不好意思啊。请看我的这儿说什么?最后一个生肖CMD会被do卡run之后的什么参数替换,哎,就是说如果我do run后面加了参数,会把它原本的这个给他什么覆盖替换了,那比如说啊兄弟们,我这儿很无聊,我加了个B。BA。大眼啊,这个东西一回车好。我们呢,来看一下。别的。Do卡,那么大家告诉我,我这个8080他们开头有没有成功启动,成功启动了这个没问题,但是啊,这又加了个冰,相当于后面这一行又加了一个什么。我们的这儿。有点类似于加了一个什么刚才你晓得的B,那么是不是就会。把我们原有的这个好端端的给它覆盖呀,那么这个时候同学们E我还是反问这个地址。
19:06
怎么着找不到服务器,哎,相当于你只是容器启动了,但是抱歉,相当于这一行你把它灭掉了,那么这个时候我们他们开的启动就有点不好看了,OK,好,那么这个呢,就是我们的什么自己演示的一个覆盖操作,那么弟兄们好端端的你根本就不用加这个,但是你一加这个,相当于又往这个配置文件里面加了第二个command,那么就把它替换的这一行就没了,所以我们他们看启动就有点不舒服,好那么最后我们来看一下它和run。命令的区别都叫运行命令,记着。Run是在什么时候构建的时候运行,Command是在什么时候run时候运行?哎,这个两个是有严格区分和区别的,大家一定要搞清楚,那么最后一个entry point这是干什么的呢?来。也是用来指定一个容器启动时要运行的命令。但是铸件它类似于CMD。
20:03
但是entry point不会被多run后面的命令覆盖,而且这些命令含参数,会被当做参数传给entry point指令指定的程序还支持传参。不废话,杨哥理论。听不懂,看案例。来,兄弟们。ENT point执行的命令参数一参数二。Entry point可以和CMD一块用啊,一般是什么?参数变参才会用CMD,什么变参就是我还想。传参数更进一步的去给他,那么。这里的CD如果你跟ENT point一块用,相当于是在给ENT point传参,意思有点类似于如果都是要运行的话,这个哥们比CMD更狠一些,它们两个运行的话,都是entry point在前,CD在后,相当于要运行哪个命令运行这个D,那么变成了一种传递的参数,当指定en point后,Command命令行义就发生变化了,不再是直接运行。
21:04
Command面作为一种命令运行,而是作为一种什么?可变参数传递给entry point,指令真真正正要运行的老大执行的变成了这个entry point,那么来,兄弟们多说无意,比如说啊。我们先做一个简单的案例,就三行,不难啊,同学们跟着我走,先听懂,待会我们再说案例,你一说你就明白了。假设我已经通过多克。构建了一个镜像叫N,然后冒号,然后呢标签这个tag就叫test,那么现在我来自于谁?四级。NX是第一行,相当于我继承的负类就是自己n ENT point,我要启动NX,是不是叫NS-C,这个是固定参数的写法,对吧?那么现在N一般要指定一个配置文件么?现在我也在里面写死叫command ETC目录下面的NN的看法,那么来兄弟们请看是否传参,按照多开fair编写的话,我们在这儿就是ENT point执行的命令command,再加后面这个就是它传递的参数叫变参,那么对应的多ER命令,假设我们这个镜像好了,我们要运行这个镜像是不是叫多ER run这个镜像叫n test就上面这个镜像,那么相当于它一运行以后延伸出的实际命令就是N。
22:22
干C,然后是ET cnx这么一个指定好的配置文件,说白了就是命令。这有N。多fair里面写的是ENT point n,那么按照我们的公式说,这entry point要执行的命令,那么相当于说要执行的命令就是N,这个N相当于这个N,这个C相当于这个杠C,那么如果entry point后面跟着command,相当于command就不再是个命令,就变成一个什么传参数的小跟班。那么相当于说你现在。这就给我传了个参数啊,那么就是NN-C-C,我要运行的配置文件就是你command里面写S的这个变参。
23:08
OK,好,这是我们的第一个,第二个啊,请看,如果你多看r engines test这个镜像以后,后面你不老实,你在后面干嘛加了这个参数,那么请看我们的command上面怎么说的啊。多当中可以有多command指令,只有最后一个生效。CMD会被多run之后的参数是吗替换,所以说在这儿。你没加,那么就是这个效果,你加了以后,相当于你这个多里面的这个command会被run后面的参数所替换,那么假设你虽然说在多块file里面,你写死固定了一个。变参访问n.com这个配置文件,但是我在run后面我又新加了一个,那么以客户run后面新加了这个为准,会去覆盖文件里面的,那么这个时候就会变成N-CN命令杠C-C,那么不好意思啊。
24:08
这个本来是在这儿呢,现在我后面run后面又追加了一个,就把我覆盖掉了,那么相当于说即便你在多尔里面写了,我最终要执行的还是依照我run后面的添加的新参数作为实际情况,OK,好,那么同学们,这个就是我们多开file常见常用的保留字,那么都给大家做了一个。整理,那么待会儿我们就用案例来贯穿这些,几个案例过了以后,将会加深大家的理解、熟悉和掌握好。
我来说两句