00:00
I。今天来聊一下什么是docker,什么是容器,容器能给我们程序员带来什么好处,以及他是怎么做到的。现在说我一个程序员写好了一个应用程序,想要发布分享给我的好朋友张三和李四,如果我直接就把这个应用程序发给他们,那很可能会遇到程序员界的一个经典玄学问题,那就是明明在我本地跑的好好的,怎么到你那儿就跑不起来了呢?嗯,而容器技术则正是为了解决这个问题,为了给广大程序员带来一套复刻、打包迁移自己的应用程序,使之能在别的宿主机上能够顺畅的跑起来这样的一一个比较丝滑的体验的技术。嗯,而docker呢,则是容器技术界的一哥,就像康师傅是泡面技术界的一哥一样。
01:00
在以刀客为代表的容器技术和以康师傅为代表的泡面技术出现之前,如果我想要把我家祖传的牛肉面的做法这样一个应用程序分享给我的好朋友张三和李四啊,我只能这么做,就是我采购好上好的鲜牛肉和面条,再附一张菜谱寄给张三和李四,指望他们在自己家厨房里复刻出跟我做的一模一样的牛肉面,但这个基本上是非常难的任务,因为首先。嗯,张三李四都是不同的操作系统,可能张三擅长川菜,李四擅长粤菜。然后呢,他们家的运行环境可能也不一样,可能张三家只有盘子,李四家只有碗,最后一些依赖库也是不同的,张三家只有大葱,李四家只有小葱。那这样一通操作下来,做出来的牛肉面跟我的原版不能说是一模一样,只能说是毫无关系。
02:06
啊,那么在以doer为代表的容器技术和以康师傅为代表的泡面技术出现之后,如果我想干同样的事儿,我会怎么做呢?首先啊,我不会买牛肉和面这样这样裸的寄过去,而是我会找一个干净的可封闭的这样一个盒子,叫它container,或者你叫它集装箱,叫沙盒都好。总之就是它是一个相对独立,能封闭,然后能装得下我复刻一碗牛肉面的所需的所有依赖的这样一个container,我会把嗯,我的应用程序以及它所依赖的所有的东西都装在里面,嗯,打包成一个刀客容器的镜像。
03:00
这样一个镜像,我就可以发给张三,发给李四,发给云端cloud上面的什么空间站,可以随意的搬运,这也就是为什么container经常被叫做一个集装箱,就是它可以很方便的搬运和迁移。嗯,并且迁移到世界上任何一个角落,任何人收到嗯,他都能够。一样的配方,一样的味道,它能都能够复刻出一碗跟我在我家厨房做的一模一样的牛肉面,嗯。我们都知道docker的logo是一个小鲸鱼,那么这个小鲸鱼在我刚才说的这样一个过程里,它发挥了哪些作用呢?它是怎么做到这件事儿的呢?首先是我在我家厨房打包的时候,我我其实我是写了一张清单,这个叫doer file do file里我会告诉小金鱼我需要哪些东西,你怎么给我放进去,这样一层一层的把它码在我的我的盒子,我的集装箱里面。
04:10
呃,我会跑一下docker build,这个docker build就是召唤docker小金鱼帮我干这件事儿的,帮我采买,采买所有的原材料,帮我打包啊,打好之后我就得到了小金鱼给我的一个打好的刀客镜像,我拿到了这个刀ER镜像,我就可以传播出去了,发给我的朋友,我可以直接发给张三李四,我也可以先doctorer push到一个doctorer HUB这样一个镜像的代收点,然后让张三和李四再去拿,总之呢,最后我的朋友张三他就拿到了这样一个刀客镜像。啊,那么他不需要准备任何的锅碗瓢盆,油盐酱醋,大葱小葱,他只需要刀客让一下。
05:06
就是给这盒泡面注入了热水,注入了灵魂,就激活了它,它就跑起来了。嗯,跑起来的doer镜像,它就变成了一个docker容器的运行时,我的应用程序就跑在里面了。呃,Docker容器跑起来之后,它仍然是宿主机上的一个进程,只不过它有一点点特殊,它跟宿主机上的其他进程有一点特殊的区别,就是docker小鲸鱼。给容器进程施了障眼法,使他看不到宿主机上的其他进程,他以为自己独占了这个宿主机操作系统的内核,其实肯定没有独占,嗯,它跟其他很多的进程一起共享这个操作系统的内核,但是因为容器进程被输了障眼法,他只能看到自己的namespace里面的东西,所以嗯,他以为自己是独占的,其实没有,这这也就是为什么我们说容器就好像跑在一个沙盒里面,与世隔绝,那这样有一个什么好处?就是如果说张三他想同时同时呃做这个红烧牛肉面和这个藤椒牛肉面和老坛酸菜牛肉面,这是没有问题的,就是因为他们是一个个的沙盒,相互独立,他们在自己的沙盒里面自给自足,发挥稳定,互互不篡位。
06:36
跟厨房里的任何食物都不会串味,它也不依赖食人家厨房里的任何东西,它也不跟人家的,嗯,食物互相串味,这样的话呢。这样我就可以把我的镜像不论是放在张三家的厨房,还是李四家的厨房,还是云端cloud上面,空间站里面的厨房,嗯,都不影响。人家厨房都不会影响到它,它就是能够与世隔绝,自给自足,发挥稳定稳定的复刻出我的原版牛肉面的,一样的配方,一样的味道。
07:13
嗯,那以上就是我今天想要分享的内容,如果觉得不错的话,不妨点个赞吧,那我们下次见,拜拜。
我来说两句