00:00
欢迎来到秋月堂,我是叶秋,今天我们来讲多cker啊,近几年非常流行的一个虚拟化容器技术学,这门课呢,是需要有一定的Linux基础的,我们来呃介绍一下docker,这是多cker的logo,下面是一个蓝鲸,上面是有很多个集装箱,这些集装箱就相当于你的应用和服务,你把你的应用和服务都放在这条蓝鲸上面。这些课我们主要会围绕这三点来讲,第一点呢就是多克的诞生,第二点呢就是多可给我们带来了什么,第三点就是多的基本原理和组成部分。好,Docker是dot cloud公司开源的一个基于Linux container技术之上构建的container容器引擎,在2013年就已经开源了,目前那个源代码是托管在g Hu上面的,它是使用go语言编写的,要也是够语言的一个标志性的一个产品。构物语言从2009年发布以来呢,呃,一直表现的不瘟不火,不是说他的语言特性不够好,而是说他没有像Java一样有一个大型的应用群体来支撑他。目前比较出名的够语言杀手机应用就只有doc和Co,呃,也就是K8s.cloud这家公司呢,是2010年有几个年轻的大胡子一起成立的,后来随着docker的流行,他们正式把公司更名为docker docker是通过内核虚拟化。
01:42
化技术,Namespace c group这些概念我们等一下会讲哈,来提供容器的资源隔离和安全保障的。由于多可通过操作系统层的虚拟化实现隔离,所以多可容器在运行时不需要类似虚拟机额外的操作系统的开销来,所以说他可以很大程度上提高系统的资源利用率。我们来看一下多克为我们解决了哪些烦恼的问题,在以前呢,我们部署服务的时候,或者是应用需要安装各种环境啊依赖,就比如说你部署一个外部应用,你需要安装一个tomca的容器和JDK的运行环境,如果机器很多的话,你要部署一个集群啊,这样那样的话你就相当于每台都是在重复的一个工作,这样搭建一个服务也会,呃,对于新手来说也会相当。
02:42
缓慢,另一个呢,就是啊,它可能出现测试环境、预发布环境或者是生产环境上的不一致,但是都可能为我们,呃已经解决了这些问题。我们来看一下多可的介绍,多可可以让开发者打包他们的应用,以及依赖到一个轻量级可移植的容器中,然后发布到任何流行的Linux机器,就比如说是现在OS系统啊,无邦兔系统啊来实现虚拟化。它也同时也是一个开源的软件部署解决方案,也是一个轻量级的应用容器框架。多可可以打包发布任何的应用程序,做到真正的build ones run anywhere,那么它是如何实现这些技术的呢?那我们来看一下多个的核心技术,呃,多的核心技术有三点,就是namespace,呃呃,Control groups啊和union FS。
03:42
我们来看第一点,Namepa命名控件。namepa是Linux为我们提供用于分离进程数、网络接口、挂载点以及进程间通信等资源的方法。在日常使用Linux或者是苹果系统的时候,我们并没有运行多个完全分离的服务需要,但是我如果我们在服务器上启动了多个服务,这些服务其实会互相影响的,就是每一个服务都可能看到,另外的服务也可以访问数主机上的任意文件。我们呃都不愿意看到这样的情况,因为这会产生一个安全性的问题。所以呢,Docker是通过它来解对我们的网络环境进行了一个呃,有限的隔离。c group是controller groups说缩写,也是linu内核提供的一种可以限制记录隔离进程组的所使用的物。
04:42
体资源,比如说CPU啊,内存啊,IO啊,这样它都可以为你进,为你的容器啊进像进行分配,在2007年呢,他就加入了Linux的内核c groups,也是Linux container为实现虚拟化所使用的资源管理手段。好,下一个AUFS联合文件挂载系统啊,它可以把呃不同的文件夹共挂载到一个共同的目录下,也是实现呃呃容器镜像分层的一个最主要的一个技术,它也可以实现容器的挂载啊,存储啊,这些功能这么多,我们来看一下fo可和虚拟机之间的区别,左边呢就是虚拟机,右边呢就是多ER,我们每建立一个虚拟机呢,就需要有一个操作系统。
05:42
但是docker呢,就为我们省去了这些步骤,那相当于这些应用啊,服务啊,共享了这个速度机的资源,怎么理解呢?我们来画个图,比如说这是一幢别墅,那我们再画个高楼大厦。
06:04
这怎么搞啊,这个呢,就相当于你的虚拟机独占了一块地基,上面呢就相当于你的docker,你所有的应用啊,服务进程都共享了这块地基,相对来说多克的隔离性并没有说虚拟机那么好哦。sorry,我们接下来看一下docker引擎的结构,呃,Network就是它的网络,Container容器,Image就是镜像that w数据键,它最里面呢是一个docker的服务进程,最外面呢是一个呃,客户端呃,交互的一个工具,Rest API是负责那个client和server之间进行交互。
07:04
再看一下do克的一个整体的一个架构,左边呢是一个呃client,就是你输入mini行来,呃对呃多可进行操作的一个客户端,中间呢就是一个的的进进程级,里面最重要的两个概念就是container和image,所以右边呢是一个registry,就相当于呃一个仓库,就像GHUB,你把你的代码放在GHUB可以随时推送随时拉取,这个registry也是一样的。目前我们经常所用的镜像仓库呢,就呃比如是有do克哈巴多克官方的,那么阿里云镜像仓库啊,网易云镜像仓库啊,那么镜像是一一个什么样的结构呢?我们来看一下,看到了吧,它是一层一层往上叠上去的。
08:04
呃,最下面呢,是一个AUFS,我们刚才说的联合文件系统,它是通过这个技术来实现,呃融呃,镜像的分层的一个架构,嗯,说到这里呢,我们就呃今天也就讲到这里了,然后我们基本上是讲完了容器的基本原理和一个技术的一个概念,好,今天这节课就到这里,谢谢大家。
我来说两句