00:00
好,那么同学们,我们来看一下docker是什么?我们首先要抛出一个问题。一门技术。他。无端的为什么会出现?为什么会有刀砍出现呢?它一种技术的诞生的前因后果,前提背景是什么?为什么会慢慢的成为?主流成为现在的热门,甚至成为后续软件开发的一种标准。那么好,我们接下来来看看为什么会有刀客的出现,好端端的我干嘛要学它呢?它用在哪儿?它解决了我们什么样的痛点,解决了么样什么样的问题?简单一句话,我们在日常工作开发当中。来。这边。我们呢,开发。这边。韵文,OK,那么传统上呢,我们呢,按照在没有学刀之前。
01:00
开发工程师是不是提交的产物,这个时候他提交给运维发布过去,扔给他一个什么?好,那么是不是我们。代码,或者说就是我们的挖包,好比方说我们的。项目完成了以后啊,通过double大家刚完成那个是吧,打他N多个包,那么这个时候呢,一个个的架包,包括我们刚刚完成的cloud的项目八不到。我们的。集群环境里面部署到多个time cat下,那么我们交给运维的是代码,是挖包好。有个前提,我们既然敢交给运维,那么自然而然是不是一定是本机,或者这个这个什么本机是指开发本机,一切都是安好,一切都是OK的,我们是不是才交啊,好吧,那么这边运维工程师他干的角色是什么呢?开始呢,部署。可是这个时候,经常会出现开发和运维之间扯皮。
02:08
那么什么意思呢?运维过来经常会跟开发说,兄弟不对呀,跑不对,那这个时候开发就会说句没问题啊,在我本机是好的呀,然后呢,运维就说你写的代码有问题,那么开发的不乐意了,你会不会玩,你会不会不说我看到没有,我在这儿是不是运行的都是好的呀?那么所以说经常会出现开发和运维工程师在交付软件部署上线阶段,有一种相爱相杀的荡起了一股令人愉悦的忧伤,吵的。脸红脖子粗,那么这个时候我们就这么想一个问题。为什么在开发这好端端的跑到运维这儿就不OK了吗?代码开运维工程师绝对不可能去私自改动你的代码,也许有些因为工程师熟悉数据库和Linux,他根本就不懂Java,也不懂什么什VC代码他不会动,也就说我们这个架包或者叫我们这个挂包他不会,而最终直接有一种情况下导致两位产生差异的情况,那么就是一种东西是什么?
03:15
环境和配置。比方说你这个开发现在是在Windows下面开发的,但是运维它部署是要布到阿里云上面,或者布到ubtu center等系统,那么这个时候环境一变,什么东西是不是就完全不一样了呀?那么所以说刀卡我们呢,来搂一。他呢,慢慢的出现了这么一种情况。一款产品,我们让它从开发到上线,从操作系统、运行环境再到应用配置,那么再加上代码。就算说运维工程师一点不会动开发工程师提供的代码,但是呢,系统环境配置这个时候开发和运维之间,我们两个协作就要非常小心了,哎,兄弟,我这开发之所以能跑,是在这种环境下面要有这些配置文件任何一丝一毫出现了问题,那么开发这能跑,运维这是不是就挂了,那么所以说尤其呢,就算1.0版本顺利了,1.2呢,1.2.1呢,1.3.5呢,1.4呢。
04:24
不同的迭代,不同的版本环境。随着系统越来越复杂,那么。加一个支付接口,要加一个软件,证书、命令函、公钥、密钥等等,那么对运维人员都是一种。压迫甚至是一种挑战,那么这个时候双方避免不了争吵,但是呢,吵归吵,我们要解决问题啊,那么这个时候我们呢,往下看。Do应运而生,主要能解决一个问题,就是有没有这种可能开发兄弟啊,你把你这OK的环境,所谓的OK的环境是什么呢?
05:04
就是我们这儿这个OK的环境,就是含。什么呢?代码配置系统。甚至是数据等等等等,总之一句话就是在这儿你能预想的这些东西能不能整体打包给我。哎,那么这种情况下,如果你的代码是在这样的配置系统数据环境下面能跑,我把它整体放到我这儿,是不是也能跑啊,就好比说一只小金鱼在鱼缸里面,你把它。整个鱼竿连这条鱼从宠物店买到你家里,它在宠物店能活蹦乱跳,在你家里面是不是也就也就能够自由翱翔啊,那么所以说这个时候我们刀卡也类似。
06:02
干了这么一件事,环境的配置变迁如此麻烦,换一台机器它就要重来一次,费时又费力。那么很多就会想到我们可不可以从根本上解决问题,软件带环境安装,也就是说,再说差一点就是运维工程师慢慢的工作变得不再是安装一个个的软件,而是安装这一个能够运行该软件的整体的。全家桶一套代码配置系统环境数据等等,那么这个时候你开发人员安装的时候是什么样?我运维人员安装的时候就把开发人员的原始环境一模一样的复印过来。整体打包,那么开发人员就可以利用刀砍消除协作。编码时候主要是指协作,是主要是跟运维,出现这种在我的机器上可以正常工作,但是在运维工程师的机器上,在服务器上不能正常工作的尴尬,那么简单一句话干嘛呢?
07:04
好比说我们搬家,现在你租住的房子是三号楼四单元。508房间好,你搬家的时候是不是从508搬到你新的店儿啊,那么这个时候就是什么呢?我们第一种模式,第二种搬家呢,你特别牛逼。找了个推土机八。怎么着,三号楼整栋楼。挖起来整栋楼的搬迁过去,然后怎么着啊,那你自己原来那个店儿,那个屋子里面什么样,里面的装修风格什么都没变,进去了以后是不是直接入住,那么呢,换句话说。以前这种配置方式啊叫搬家,现在这种方式啊,通过刀卡叫搬楼好,那么呢,我们呢,先来让大家看看这张图,提高一下大家的自学能力。现在。
08:01
杨哥带着大家刷一门新技术,那么呢,我还没讲,请先搂眼。就记得一句话,以前我们只教代码,现在我们要教整个环境,以前是搬家,现在是搬整栋楼。好,同学们,那么呢,继续。刀这。请看。我这是不是说过正确的这种东东啊。一套的搬过去,那么这先提前说。刀卡里面有一个重要的概念,也就是刀砍的三要素之一镜像。那么这一整套。就叫镜像。什么意思呢,以前我们来看。我们呢,代码就是运用,我们只管把我们的代码写完了以后啊,编译成一些文件了,成源代码了,交给运维,由运维去部署,那么呢,从现在开始要有这个理念。
09:05
我们呢,不再是提交代码,当然也要交代码,而是在除了代码以外还要运行。的文档配置的环境,运行环境运行依赖包特内核等等等等,我们就像我们说的不再搬家,搬整栋楼,那么这样的话,是不是把这些你该当前这个功能能稳定运行的一整套环境。干嘛带着环境安装到刀口上面,然让运维工程师发布啊,那么这样的话呢,就可以。把原始环境一模一样的复制过来,消除了在开发,这能跑,在什么运维工程师这儿不能跑,而且运维的话呢,还有个非常苦逼的概念,是什么概念呢?兄弟们,运维工程师基本上现在他要是部署的时候,因为最终程序体现的价值是你的,你的编码出现的项目系统,你的作品要上线了,要让大家看得到,那么最后一步是不是就是我们的什么东东?
10:11
部署啊,而现在呢,由于互联网高并发的环境和大流量的访问,几乎非常坑爹的一个环境呢,一个情况就是什么呢?都是什么概念。集群,环境集群,再说简单点是什么意思啊,一台还是多塔,哎,多台,我们讲过什么?Red集群,Zoo keeper集群,MYS数据库集群,哎,不多说了,这些同学们在硅谷学了半年,我闭嘴了这些概念。现在这个概念是你交过来的代码有可能是什么?十台吧,咱们就说少点。二每一台你都要需要去安装数据库啊,Red keepper double,这个这个这个这个这个这个好,这还是十台,就算说这个运维工程师天天996加班,他撑得住,那假设碰上一次活动,老板跟你说给我把这个机器做弹性云扩容干嘛?可能我们的集群需要从十台扩到30台,那么我认为这个时候这个运维工程师又要再多装20台的话,他就疯了。
11:19
那么这样一种情况下,我们就能想一个问题干嘛?什么叫把整个软件复制下来?我在一台机器上装过了。Red mango DB me cash myql jdk8等等等等,那么我下一台机器还这么装啊,那么我们学Java也知道干什么呀,要把相同出现的代码抽取出来,形成一个公用的方法,是不是对外暴露啊?那么这样我们就不用到处编调一次就行了。那么一样刀卡也认为就说我能不能把这样一个良好的软件运行环境打个包,封装成一个东西叫镜像,然后需要安装的每个人有这么一份镜像不就OK了吗?那么这种理念就是我们的刀砍理念的雏形。那么所以说干什么呢?我们不再教代码,那是以前的玩法,现在是教是吗?镜像,那么什么叫镜像?就是含除了代码以外,还有这一堆堆东西就是我们的。
12:19
原始的环境,保证大家迁徙后能够正常运行好。那么再来我们呢?说过了。自己呢,我就不在照本宣科读一下,那么呢,所以说这个时候我们可以看到,以前我们是教编码,但是你交了编码以后,就算我们开发团队给运维交接,你的这个文档写的再顺利。他还是会出错,那么所以说我们呢,为了避免部署失败,干脆就把我们的正确的这些环境打个包,变成一个镜像,使得doer呢用起来打破交代码,这种情况干嘛,我们把我们这个程序能够顺利访问的系统环境由下而上的打个报号,搬整栋楼。
13:10
达到跨平台的无缝接轨运行,那么是不是有点接近于Java虚拟机的理念,Java代码的理念是不是一次编译处处运行啊?那么呢,刀卡也一样。承上启下的先说一下他刀砍的理念。那么就是一个。一次构建,处处运行,OK。
我来说两句