00:01
那接下来呢,我们继续学习我们的do fair的转换方式。Do FA首先是什么呢?之前也给大家解释过了,对吧?它就是dock自定义的这么一个语法规则,我们可以借助do FA的书写,让他去帮我们去完成转换成真正我们想要得到的这么一个镜像体。那你也可以理解为它就是一个。脚本,这个脚本执行完成以后,会得到我们对应的环境,当这个环境是最终已经被封装的。那所以它的一些语法规则就非常重要了,对吧,还是那句话,它既是重点也是难点。那首先我们先打开我们的刀费,看它有怎样的一些规则,我们去学习一下。那这里有很多了,对吧,我们需要一点一点去讲解了,大家别提好,我们一行一行去看,首先第一个放。指定的是基础镜像。怎么去解释呢?就是我在去构建我的一个环境的时候,比如构建的是阿帕奇。
01:02
阿帕奇的安装需要用到我们的CGCC以及GCC-C加压,对吧,那这是不是相当于就是lab库承接。那库程机又需要我们Linux内核的支持,对吧?所以基基础镜像的含义就是我们这些基础的工具集合就是基础镜像,我们在构建一个新的镜像的时候,New image的时候,我们需要借助到技术镜像。那你就要告诉他,我用哪个基础镜像去构建。那所以这里的from的含义是必须有的,在一个dog中。必须有一个from,当然它也只能有一个,你不能啪啪啪搞30个from,对吧,那就不行了,有且只有一个,希望大家注意一下,From引入基础镜像。Mantina也就是用来指定我们的创建者,相当于给他打一个身份标签,对吧,告诉他诶。到底我现在的身份是谁?好,下一个好。RA安装软件使用。
02:02
那这是什么含义呢?在我们原来的脚本里,如果我想执行一个iOS的时候,是不是就直接iOS即可,直接写到我们的下脚本中即可,对吧?但在我们的刀中,如果你直接在脚本里写iOS,它是不执行的,你必须要在前面加个wrong。你也就可以理解为,在我们的do中,只要是你要用到的命令或用到的一些一些语句的话,如果想让它直接运行的话,你就必须要在前面加个wrong。非常简单对吧,比如在这里演示对吧,Run CD以下的temp,然后呢,Co-L下载了一个tomcat,然后T去解压,这代表的含义就是相当于这条这条命令放在我们的校中运行。这条命令就是放在我们do中能够被运行。差距就是前面加了一个wrong。当然我们也可以通过这种大括号的方式,通过BY-C爱哈的这种方式去传递,它也能正常运行,但基本上我们比较常用的还是这一种,对吧,比较简单。
03:02
下一个CMD。设置卡启动的时候执行的操作,这也就是我们在说卡不不能给我们带来的一个功能,就是do image do PS。不能带来的功能就是不能把这个command给它修改掉,对吧?Com做不到,那在这里呢,就通过CMD可以设置这个command命令。可以设置这个启动的时候,Command命令也就意味着只要从我们的镜像转换成容器以及容器的start启动的时候,它都会去执行我们在CMD里设置的这条命令。可以是一个自定义脚本,也可以是一个系统命令。但在大型环境中,我们一般用的都是自定义脚本的方式,因为它需要去匹配设置。CMD的座椅。但但需要注意一下。该命令只能在文件中存在一次。也就意味着类似于我们的还不同于from from如果有多个就报错了,CMD有多个不会报错。
04:05
但是只执行最后一个。也就是你前面写的都是废话,我都不看,我就看你最后一条,如果有多条的话。所以一般来说,我们也只能写一个,对吧,你写多个没有意义,你写这么多干嘛呢。你说哎,那万一我要去干的事情有很多,比如先启动什么,启动什么,启动什么启动什么这很多条怎么办?我们是不是可以通过二十二十去连接起来啊,那这样的话是不是依然是一条。是吧,需要大家注意一下。下一个。在设置content是启动时候执行的操作,诶你会发现跟CMD是一模一样的。没错。In呢,也是我们在容器由镜像启动为容器的时候,以及容器自启动的时候,Start的时候,它都会去做这么一个。执行到。命令操作。那你说CMD有了,那为什么还要硬吹泡他们?
05:00
原因是我们CMD和硬棒呢,可以互相配合。需要注意一下,如果在一个环境中,比如我们签cmd hardwood,我们在。什么?再来一个,比如IO123,你觉得会执行哪一条?其实跟我们CMD单条存在一样,如果CMD和point没有联合起来,那它俩依然会认为是同一个类型,只执行最后一条,最后一条如果是point,那就执行point,如果CMD在interpointpoint之下,那就执行我们的CMD里书写的命令。那你说什么时候它才他俩才能共用呢?相互配合,比如像这样CMD大括号杠L指定我们的命令的参数。吹泡,跟上我们的命令。加在一起的含义就是只要一重镜像转换成容器,或者是容器一启动,就会执行LS-L。
06:05
你说这也太费事了吧,对吧,我们直接CMDLS-L不一样的吗?或者是因为胖一个LS-L。对,没有错,但是他确实有这种用法,如果大家后期见到的话,不要惊讶,对吧,要知道它是什么含义。就够了,那当然我也建议大家使用我们的什么的iOS-L即可。没必要这么费事,对吧,好。自己为难自己,那下一个us。设置容器启动的用户。那也就意味着默认在启动的时候,我们的现在的身份是root用户用户,那如果你想让它把它转换成比如ma开启用户的话或DEMO用户的话,那你就可以在前面加一个user DEMO。那只要是这个容器在启动以后,就会转换成单用户的运营身份。希望大家注意一下这么一个概念。那下一个。Expose。
07:00
这个代表的是我们去告诉用户你要暴露哪个端口。如果你执行了这条命令,Run,杠p put,杠p put,杠p put,或者杠p put。冒号put对吧,也就是输主机的释放端口,容器的释放端口,那这样的话是不是可以把我们容器。给他暴露出来。你说那ESPOS有什么作用呢?我给大家看一个演示,你就能看得懂。那首先呢,我们先do image,我们看一下镜像这里是不是有个叫做me DB,这是我们官方的MDB对吧,我们去运行一下。Do run刚刚内幕就叫melody。杠地放在后台运行啊。MYDP。好,刀杠A,我们看一下。这里的DB已经退出了,对吧,原因是什么?它是一个脚本去启动成功的,但脚本里需要去你去传递用户名以及密码。这里没有是吧。
08:00
那我再换一个。等会啊,这里有这里有看到了吗。我想看的就是这个端口号。这里会有一个pose,下面写了一个二杀。看到了吗?有些人可能会有疑问了吧,诶,为什么你这里DB没有显示什么3306,那这里为什么会显示一个二。原因就是在封装镜像的时候,在封装镜像的时候它输入了is。后面空格22。也就是这样这样一条命令,那这样的话,在容器启动以后,它就会在POS目录下显示一个22-TCP。你说这有什么含义?就是告诉用户,我22端口是一个特殊端口,你应该把它给放开。你说我写这个po能跟公网进行直接通讯吗?并不能,这里只起到起到一个显示作用,你说。我不写这个可以吗?当然可以,只是不在这里显得出来了,没有提到一个警示作用,仅此而已。跟我们后期杠屁。
09:01
比如啊冒号啊,他那这样是不是也可以让我们的22端口暴露出去。是一样的。也就意味着,也就意味着还是那句话,它只起到一个显示作用,需要大家注意一下。好,下一个因为。可以向我们的容器内部去注入一些系统的环境变量。也就是用用法就是因为K也就建明后面是渐值,那这样的话一个变量就已经有了。非常简单对吧,好。那下一个。ID从src复制文件到content的目标路径。也就意味着我们再去构建一个新的镜像的时候,可能会用到一些源码包,这些源码包在镜像里肯定是没有的,对吧?在基础镜像里肯定是没有的,那我怎么从我的当前的操作系统把它添加到技术形象里呢?就是通过了IDD的命令。并且I非常。
10:00
好用,它的语言地址可以是一个相对路径,也可以是一个URL。也就意味着,如果你给他填写的是一个URL的话,他会先帮你下载,然后再拿进去。是不是非常好用啊,对吧,好,这是我们的ID。Copy呢,也是从我们的原文件复制,复制到我们的目标文件。唯一的不同点就是copy它。不解压。而我们的ID,它解压。也就是ID把文件拿进去以后,如果是个压缩包的话,它会默认解压,并且copy不支持URL,它只支持从一个文件拿到。另一个文件拿到另一个目录,仅此而已。需要大家注意一下,也就意味着如果我们需要拷贝一些数据的话,拷贝一些数据放到我们容器内部的话,你可以使用copy,那如果用一些源宝包去下载啊,去安装的话,你可以使用ID,这样的分类方式是比较靠谱的,因为copy不会把。
11:00
文件进行改动。比如把压缩包解压对吧,好。下一个wall我们这个跳过,因为我们后面要讲持久化的时候才能用到它,现在讲的话大家可能听不太懂。找下一个。叫切换目录。切换目录怎么理解,就是相当于CD命令。也就意味着,如果这里用的是沃克第亚,看到了吗?根下的P,沃克D亚,根下的PRRAV 0tit,也就意味着在根下的P一下的PM路。打开一个i.T文件,用VM对吧?好,等同于什么?等同于wrong。CD。P1 p2,然后22,四。诶。好,v.T打开它。等同于它到底要用哪一种呢?反正我经常用的是这一种,当然你也可以用它,对吧,都一样好。
12:01
找下一个on build。Unb是使用迷里最好玩的一个。也最有意思的一个。如果你用on build设置了一些命令以后,它在当前并不会执行,也就是我们把它封装成镜像,新镜像里并不会执行。新镜像转换成容器的时候。New image和我们的容器他也不会执行什么时候再执行,如果有人拿你的这个新镜像去做另一个更新的镜像的时候。这条on build就会执行。也就是在它的子镜像中就会执行。那你是不是可以在这里做一些什么智慧操作啊,一些其他的一些比较有意思的一些做法。功能就这一个功能。用途不是那么多,但是在很多情况下能起到意想不到的作用,对吧,比如保护我们的数据。那这个呢,就是我们常用的一些do的语法,除了一个我们的呃,W我们现在没有讲,因为现在讲了你也听不懂,那其他我们大部分都已经做过了,对吧,好。
13:00
那这样的话到费用基础语法你就应该掌握了。怎么去加固你的认知呢?我们刚才是不是给大家打开过一个网易蜂巢啊,对吧,到镜像中心。你这里会发现镜像库,这里会有一堆的镜像,看到了吗?比如我们去选一个,选一个water please。Word里面是不是有很多的不同的版本啊?我们去选择一个吧,随便点一个,比如4.01的阿尔法奇。看到这里是什么?是不是有点熟悉啊的copy。CMD对吧,这是一个配合启动的方式。看到了吗?你说你说也就是我想表达的是什么。如果你想加强你的认知,以及像你去看看别人怎么写的话,以及自己怎么找思路的话,观看别人的优秀的dog是最好的一种方式。那大家是不是就可以去到这个网易蜂场里挑一些dog去看?
14:01
一行一行的去解释,自己去解释给自己听,如果解释的没问题的话,并且你觉得诶,他的这个想法挺好的那。你其实到应该也差不多了,对吧,学习别人的最好方式好。那接下来呢,我们给大家做个演示,比如去演示一下怎么去构建一个我们的。Tomcat的这么一个技术形象。这里我已经准备好了一个刀了,我们就直接拿过来给大家看一下。首先创建一个tomcat的目录,CD到tomcat目录中。然后呢,把它都给移进去。一个我们的GDK环境对吧,一个是我们的阿帕奇的汤的。年包。压缩包,还有一个是我们的到货费用,我们打开到货费用看一下。比较简单对吧,好。From从哪个基础镜像加载进来,然后打了一个标签是我的邮箱对吧?然后添加当前目录下的阿帕奇到root目录下,我们之前也说过了,IDD会自解压对吧?好,添加GDK倒入的目录下,它也会直解压,设置环境变量,Java home的和PA的。
15:06
那这样的话,是不是就是我们的GDK就直接能够使用了暴露8080端口,当这个暴露端口只是用于显示point,在启动的时候,启动命令是start。Up,但这不并不是一个前台的守护进程,我偷了一个懒,用的是t f t if这个命令是不是就是?前台的守护进程啊,打开我们的卡德琳娜的是吧,日志脚本对吧,日志文件,那这样的话是不是就是有前台进程了,这又能把我们的汤CAD给启动了,对吧?那过来我们去看一下能不能实现。那怎么去把do fair转换成我们的镜像呢?使用的命令叫do build。所以我们一般呢说,哎,给我build个新镜像,给我build个新镜像代表的就是这么一个含义,好杠T,我们的镜像名叫tomcad冒号V1.0版本。回撤。
16:01
加一个点对吧,代表从当前去索引到费。好,看到了吗。第一步第二步,第三步,第四步,你会发现每执行一步,后面会出现一个ID号。这也就是。在我们的刀再去执行的时候。它执行每一层都会转换成一个新的。镜像。转换成一个会出为一个新的成绩,那这些成绩最后结合在一起就是一个新的镜像,需要大家注意一像,还是那句话对吧,这里的行数是有限制的。在dog里你并不能一直一直无限的写下去,那相当于是不是这个就会有无限程啊。所以dog里的另一个非常重要的点就是。最多。不超过。128层。最大不超过128层,需要大家注意一下哈。
17:00
也就意味着你最多写的命令只能有128行,不能再往上抄了,你说那万一命令有很多,命令步骤有很多,那我写不了怎么办?比128还多怎么办?那你是不是就可以把一些相同的命令,把它通过二二的方式把它给结合在一起,结合成一行是不是就可以啊,对吧。一定需要注意一下,虽然大大部分的人都不会超过128行,对吧,但这也是一个重点,好,Do PS,杠,A,我们看一下。啊,倒给你卖去。这里是不是就会出现一个tomcat v1.0版本的容器了啊,镜像了,那接下来我们去把它运行一下。Do wrong,杠杠内。起的名字叫什么呢?就叫tomcat吧,杠P,我们要暴露端口了,对吧?不然的话没办法从外面的浏览器去访问那暴露端口,比如就是八零吧。那内部的端口默认是8080,他看了的没忘吧,好放在后台运行杠D。
18:00
容器名叫tomcat,版本号是V1.0版本启动。这里已经启动成功了,对吧,好刀个杠A,我们看一下。Tom k在哪,在这对吧,Tom k看这里是不是启动了一个命令啊,这个命令呢,就是我们之前去看到这么一条命令,比如我们加个刚刚no。Trunk。还是显示不出来对吧。反正讲白来说,还是我们的in的这个命令,它这里展展开不了,好那这样的话,我们他CAD已经正常启动了,并且端口也重映射了,对吧,我们就可以访问了。比如访问的是10.10.10.1的八零端口。看到了吗?这是不是就是我们阿帕奇的默认首页啊,啊,他们看到是默认首页,怎么阿帕奇了他们看的默认首页?甚至我们在这种情况下,是不是直接做了一个端口转端口映射啊,我们都不都可以不在配置文件中去修改,或者通过NN反向代理了,对吧?好,那这个就是怎么去通过dog feel去做一个自己想要得到的这么一个。
19:05
镜像,当然你可以把这个镜像当做再当做基础镜像,然后把你们公司的一些代码,Java的价价包对。发。就是包装在我们的新镜像里,那新镜像与运行的话,是不是就是你们公司的Java项目。很好理解对吧,好。那这节课呢,我们就讲到这里,它是一个重难点,非常重要,没有之一。那好好的把它给理解一下,包括去到我们的网易蜂巢里面去找一些,找一些这样的刀费去看,自己去看,学习它的书写方式,书写思路。那这节课呢,我们就先讲到这里,我们下节课再见。
我来说两句