00:00
前面呢,我们已经开发好了这个场景,哎,现在呢,访问也是正常的,那么现在来考虑一下我们自己开发的这个应用,那么接下来该如何打包成镜像,那打包成镜像呢,是后来非常方便部署和运行的,但我们先来考虑一下,如果没有docker,我们以前这个我们该怎么给服务器上放以前的方式,以前的方式呢,可能会是这样,因为现在有了spring boot以后呢,好多都已经简化了,我们先上spring boot,把这个应用打成一个可执行的JA包,直接可定package,这是我们的第一步,可以记录一下以前的步骤呢,可能先是第一步spring boot,当然我们现在是以Java应用为例啊,以Java咱们这个为例,所boot呢,先打包成可执行的炸包,可执行炸包炸,然后呢,接下来第二步,我们需要怎么做,来稍等啊,第二,这是第一步,我们把这个炸包拿来。
01:00
就是这个炸包,这个炸包呢,我直接啊打开把open印,我直接以文件的方式打开好,文件夹的方式在这在这好我们的这个炸包呢,在这就是呢,如果有了spring boot给我们打好的这个炸包,我们其实可以到目标服务器,假设我本本电脑就是目标服务器,目标服务器呢,你只要装了Java环境,可以直接运行Java,让JA把我们这个JA包呢,叫什么Java DEMO对吧,已运行就行了,哎稍等一下,这种方式呢也是可以的,所以这是我们的第二步,然后呢,把JA包上传给服务器,Jar包上传给服务器,然后呢,第三步,服务器运行Java杠,这然后呢,大家有没有发现这种方式有没有什么问题,假设呢,现在这个炸包上传给我的这个服务器了。
02:00
可是我这个服务器Java环境还没装,所以我还得装环境,如果有新的服务器,我又得装环境整一大堆,而且呢,这只是一个Java应用,还好今天给我塞一个Java应用,明天给我整一个前端的,后天是Python的等等,那我们天天都玩了,装环境了,所以我们就希望呢,有没有一个统一标准,就是呢,我们以后呢,给机器只需要装一个环境,所有机器都装docker,都安装docker,都装好docker了以后呢,我们无论是任何应用,任何应用都是镜像,都是镜像,你镜像呢,只需要打包整上一次镜像,把打好的这个镜像呢,然后呢,所有机器都可以运行,是不是就方便很多,所以我们现在呢,就把我们的这个应用打包成镜像,当然你真正要打包镜像,其实应用里面的核心就是这个包,它是可执行的,所以我们来看啊,怎么打包镜像在我们现在呢,就应该用刀客的方式,现在我们其实就是。
03:00
这种方式,所以呢,我们想要把这个音乐打包成镜像,那需要做上一件事儿,怎么打包,怎么打包,在docker里边呢,有一个这个东西叫docker fair,就是呢,我们给每一个应用呢,我们可以编写一个docker fair,就是我们的docker文件,这个docker file呢,就是来指定我们应用该如何打包的,好,我们就来创建一个docker file,这个docker创建好了以后呢,这个里边的内容怎么写,当然详细的写法呢,呃,周洋老师之前也已经讲过,包括在大厂学院各种地方都有,我来看一下这一块有没有doer fair这种文件格式啊,然后呢,我现在呢,就直接来写,首先呢,每一个应用我们现在先这么来考虑,无论是我们是任何应用,它都有一个基础的运行环境,所以呢,我们是这个打包镜像,先写第一个,我们称为指令叫from,你的基础运行环境是什么?那我的这个Java应用的基础运行环境,那就是Java。
04:00
我们来找一个va的基础环境,我们直接去在do里边呢,我们这个的基础环境,我们一般使用GD,稍等一下啊好,我来找一个呢,叫JDKJDK,这是我们的GDK的镜像,我们点进来,那open jdk呢,我们来找版本,我是扎VA8,所以呢,我们来这么来找,我就直接说这个怎么写吧,它的这个版本命名是这样的,前面是版本号八杠JDK,八杠JDK,然后呢,我们都找到了带八杠JDK的,但是这是什么十把,我们主要找这些八杠JDK啊,就是这个,所以呢就是这个,但是大家注意一定用的不是这个,这是Windows版的JDK镜像,它带了整个Windows的基础环境,你看这都5.9G,因为我们现在是Linux,所以不需要这些,那我这个找一个8GDK是Linux版本的,比如这个8J。
05:00
Test slim吧,这个就是有瘦身版的,那就是叉它,你看这是Linux平台啊,别看Windows平台把这个doer破命令干掉,这就是我们找到的第一个基础镜像,第二个我可以写一个叫label,这个from label,这都固定写法,然后呢,Label我写一个叫mantina mantina呢,代表这个镜像的作者是谁,我就写一个雷锋扬吧,好,然后呢,再来,接下来我们还要写什么?我们要写两个,一个叫entry point entry point叫我们镜像的启动命令,或者写CMD,这两个都行,至于区别,我们在大厂学院之前都已经详细讲了,所以我现在就在这直接写啊,当然不懂的同学就照着老师写,我们呢,大家想啊,我们这个镜像的启动命令是什么?我们这个应用启动是不是就是启动这个炸包,所以呢,我就是这么来写Java杠炸,Java杠炸,哎,每一个命令呢,用这个双引号,然后呢,Java杠炸启动哪个。
06:00
启动这个,所以呢,这就是我们扎va杠炸启动这个应用,这是我们的启动命令,但这个炸包从哪来?大家注意啊,一旦以我们这个刀ER费为准打包,好呢,就是一个小型的Linux,所以你得让他把这个炸包复制到我们的小型Linux系统里边,所以呢使用一个命令叫copy copy什么,因为我们这个docker fair文件呢在这儿,它的这个炸包呢,在target目录,所以呢,你给我把target目录下边的这个炸包,但这个炸呢,有可能是任意名字的炸,呃,我们可能名字会变,所以我直接写一个星点炸,我再写星点炸,其实就这一个炸,然后呢,我复制到复制到哪个位置,我直接写一个APP点炸,啥意思,相当于复制到我们这个小Linux系统里边的根的APP上,我把整个这个给大家写一下啊,就是这样子的,把这个图呢给大家画一下。
07:00
就是呢,我们自己的这个Java应用,大家要想清楚,这是我们自己的Java应用,我们自己的Java应用呢,得有一个基础镜像,但不管怎么起,我们自己的这个Java应用呢,肯定是一个完整的小Linux,完整的一个运行环境小Linux,所以呢,而我们的这个小Linux里边呢,一定有我们自己的炸包,所以Linux的根目录里边,我先搞一个APP点炸,所以呢,让他把我们真正的炸包放到我们这个完整的linus的这个根目录里边,然后呢,我们这个应用启动的时候,就启动这个炸包,所以我就我这一块就变成咔Java杠炸杠咔就是启动我根目录的这个炸包,所以这一步呢,非常重要啊,我呢就写了这么三步,其中最关键的两步就是这,我把我们这个应用里边target里边的这个炸包,我复制到Linux系统啊,一定记住是复制到我们这个容器,哎,我们最终打包好的这。
08:00
的容器系统里边的,好,整个这一块写好了以后呢,我们接下来就可以给它进行打包,当然我们的这个打包呢,由于我们Windows上根本就没有安装docker,所以呢,我们这个打包命令要在啊,我们安装了docker的这个机器上运行,当然在我们本机也可以运行,那后后来呢,你可以装一些插件啦,或者什么玩意儿啦,这都行,那我现在呢,就直接把我们的这两个东西,我上传到我的这个机器看好啊,上传到哪CD到杠,CD到我们的这个root目录,我呢把我们的这一块上传,我直接打开我们的文件位置,我要上传这两个东西,第一个是target里边的东西和docker fair就把这两个一上传就行了,源码不用,因为target里边最重要的是我们这个炸包,所以呢,我就这样把我把target给跟这个来复制过来,随便搞一个文件夹。
09:00
我这个只是为了方便啊,叫啊都行,这个文件夹呢,我把没用的东西我就不往上传了,要不东西有点多,先把这个复制过来,然后呢,把没用的东西一删,就是target给里边没用的这些这些这些都没用,只保留一个炸包就行了,所以呢,我把整个AA文件夹我往上传来到我们的这个服务器,呃,我找SFTP,好,我来找上传刷新一下啊,把我们本机呃,本机的我们的这个桌面上的来找我们的这个桌面在哪看一下我们的这个位置,我们最终搞定了的这个位置,我们最终在本机搞定的位置是这个AA目录C,那这个AA目录CTRLC来到我的这个Linux小工具。
10:00
里边好,进到A目录,我再往上走一层top里边,我把这个A我上传到这,稍等一下啊,来看一下我们这个Linux上有没有上传完,但没没上传的话,这个进度条在等啊LS好,已经有AAA了,CD到A下面这有一个,这有一个里是核心内容,那么就等上传好,那大概等了三五分钟呢,我们这个就上传完了,给大家确认一下,主要呢是在我们的这个target里边,我们会有我们真正啊服务器要运行的这个炸包,那就是这个炸包,而这个炸包如果我们现在到服务器运行,你还得装炸va环境等等一大堆,太麻烦了,有了刀。
11:00
ER fair以后呢,Docker fair相当于就是告诉docker,我们接下来你怎么把它制作镜像,好我把这个docker fair拿过来,然后呢,我们接下来就来制作镜像,来看一下镜像该怎么制作,只需要一个命令叫docker build,这叫构建,构建build构建的时候呢,接下来需要一个指令叫杠TT呢就是我们的全称叫T,现在我们把这T呢就是镜像的标签名,现在我们给构建的这个镜像起一个什么名,比如呢就起一个叫Java-DEMO,这是我们镜像的名字冒号,比如V1.0,好,这是这个,然后呢,接下来注意我们再可以写一个叫杠F,你是使用哪个多块费构建的,我们是使用这个的,当然这个杠F呢可以不写,只要你的这个docker的这个配置文件docker fair,你默认叫这个docker fair名字,那你就可以不写,然后呢,接下来有一个。
12:00
最重要的叫点,别忘了这个点儿,这点代表在当前目录下工作,也就是为啥要在当前目录下工作,因为我在这一块呢,有重要的一句话,就是呢,我们的这个docker在构建镜像的时候,首先下载一个基础镜像,基础镜像呢,其实就一个小完整的Linux系统了,然后中间呢,有一层叫复制这个位置的炸包,所以这个位置以哪个为基准开始呢?就是以我们这个点,我所谓的点现在就是在AA目录下,我是把AA目录下的target里边的所有炸包,我复制到我的这个基础镜像的小Linux系统里边,所以这个点大家别忘了,我现在回车,这就开始了整个构建流程,我把这一块呢复制一下,这就是我们构建镜像的命令,使用这个命令构建镜像,好,我们来稍等一下,这个镜像构建完了以后,接下来怎么办呢,我是不是。
13:00
可以直接按照这个镜像来启动容器了,我就来等待它构建完成,大概等了三分钟,它呢有四步,对吧,我们把这四步运行完,我们这个镜像就已经搞好了,因为这四步呢,相当于我们这个docker fair的指令,我们写了四行,然后呢,我们可以来看一下docker images有没有把这个镜像给我们弄出来,Docker images这有一个账号DEMO没问题,这个镜像呢,315MB的原因就是带了JDK的基础镜像,对吧?我们看这个open jdk,我们这个基础镜像都228,然后叠加了我们的应用包,所以呢,我们这个已经有了,有了以后呢,接下来我们要启动我们的Java应用,那就简单多了,用我们的这个命令好想要启动容器,我们以前的命令叫什么呢?Docker run镜像都有了docker run,我们构建的这个镜像呢叫Java DEMO1.0,就是这个Java DEMO为1.0,我们想要启动它,但默认先以后台方式启动,在杠P,因为。
14:00
我们这个Java是在八零端口工作的,哎,不是八零,是8080,所以我写8080机器的8080来到我Java的8080对吧,然后呢,再接下来干嘛?这就是杠地杠P这就结束了,所以呢,这就是我们动的一个,我们来启动一下,粘贴好doer PS,大家看一下我们启动的这个应用好扎va demo8080到我们啊容器里边的8080,那么启动成功了没?哎,这一直成功啊,大家一定要doer PS看有些呢,可能成功三四秒以后,你有任何问题就给退了,所以你刀确定它一直在这运行就行了。当然我们的这个启动呢,你还可以写一个,比如刚刚name幕吧的这个起个名就叫my Java APP,这是我们的Java应用,好随便,那么这个应用启动起来以后呢,我可以访问一下,现在看一下行不行,现在呢,我的这个访问就。
15:00
是使用我们公有云服务器的地址了,这个大家伙都能访问了,而且呢,我们来看有没有记住之前的这个数字,我来回车,但这个访问如果不通的话,要调什么,是不是安全组啊,我来到安全组里边来给它放一下端口8080,那Java的80808080,这是Java,好,我点一个提交应用修改来稍等啊好,我们这个修改出来呢,大家看12人,13人,14人这就OK了,包括呢,如果我们想要发现呢,运行过程中有问题,以前我们在本地会有这一块运行的这个日志已启动,包括呢,我们在云服务器上也一样,我们启动的这个应用呢,包括就是这个Java应用,我们可以doer什么logs查看它的运行日志,这个应用的ID,我直接把这个ID拿来回撤。
16:00
看我们的整个运行日志是不是就在这儿,包括doer logs,杠F,让他跟踪着来跟踪着,对吧?杠F如果有新的日志,它在下边呢,还会打印,比如我们多杀几次,看有没有新的日志,或者呢,我访问一个不存在的,它肯定会打印一个404日志,看一下有没有啊,哎,没有,那就是我们这个日志级别呢,没有调那么低,所以呢,只打印英符级别,那就OK了。好,那现在呢,这就是我们的整个应用,我们如何自己打成一个包,所以如果你是C加加Python或之类的,所以你的from的基础镜像C加那些就简单了,基础镜像呢,Linux里边就行,Linux带一些C加工具,如果是Python,那你就找你的Python的基础镜像go之类的等等等等,然后最终呢,再来说我的这个镜像的启动命令用啥,所以你以前会怎么部署应用,现在呢,打一个包就更方便了,而且优点是什么呢?大家可以接下来的实战,就是我再去新的。
17:00
服务器,行,我们把这个实战放到下一节课吧。
我来说两句