其他分享
首页 > 其他分享> > 【搬运】如何通俗的理解docker?

【搬运】如何通俗的理解docker?

作者:互联网

历史:

  2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术(LXC,就是Linux容器虚拟技术(Linux container)),dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker

  办不下去了,在2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定,将Docker项目开源。

  Docker火了之后,dotCloud公司干脆把公司名字也改成了Docker Inc。

---------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Docker和容器技术为什么会这么火爆?

说白了,就是因为它“轻”。在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack【大家可以了解虚拟机与容器的区别】。虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。

虚拟机:

相信很多人都用过虚拟机。虚拟机,就是在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。

                                                                           

 

 

 容器:

虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare)。而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。它启动时间很快,几秒钟就能完成。而且,它对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB级甚至KB级。

                                                                      

 

正因为如此,容器技术受到了热烈的欢迎和追捧,发展迅速。

 

具体来看看Docker:

大家需要注意,Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。想要搞懂Docker,其实看它的两句口号就行。

 

第一句,是“Build, Ship and Run”。

 

 

 

 

也就是,“搭建、发送、运行”,三板斧。

 

举个例子:

我来到一片空地,想建个房子,于是我搬石头、砍木头、画图纸,一顿操作,终于把这个房子盖好了。

 

 

                                        

结果,我住了一段时间,想搬到另一片空地去。这时候,按以往的办法,我只能再次搬石头、砍木头、画图纸、盖房子。但是,跑来一个老巫婆,教会我一种魔法。

 这种魔法,可以把我盖好的房子复制一份,做成“镜像”,放在我的背包里。

 

 

 

 

等我到了另一片空地,就用这个“镜像”,复制一套房子,摆在那边,拎包入住。

 

 

 

 

怎么样?是不是很神奇?

所以,Docker的第二句口号就是:“Build once,Run anywhere(搭建一次,到处能用)”。

 

Docker技术的三大核心概念,分别是:

 

  我刚才例子里面,那个放在包里的“镜像”,就是Docker镜像。而我的背包,就是Docker仓库。我在空地上,用魔法造好的房子,就是一个Docker容器。说白了,这个Docker镜像,是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

  也就是说,每次变出房子,房子是一样的,但生活用品之类的,都是不管的。谁住谁负责添置。每一个镜像可以变出一种房子。那么,我可以有多个镜像呀!也就是说,我盖了一个欧式别墅,生成了镜像。另一个哥们可能盖了一个中国四合院,也生成了镜像。还有哥们,盖了一个非洲茅草屋,也生成了镜像。。。

  这么一来,我们可以交换镜像,你用我的,我用你的,岂不是很爽?

 

 

 

 

于是乎,就变成了一个大的公共仓库。负责对Docker镜像进行管理的,是Docker Registry服务(类似仓库管理员)。

不是任何人建的任何镜像都是合法的。万一有人盖了一个有问题的房子呢?

所以,Docker Registry服务对镜像的管理是非常严格的。 

最常使用的Registry公开服务,是官方的Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。

好了,说完了Docker,我们再把目光转向K8S。

 

K8S:

就是基于容器的集群管理平台,它的全称,是kubernetes。

 

 Kubernetes 这个单词来自于希腊语,含义是舵手或领航员。K8S是它的缩写,用“8”字替代了“ubernete”这8个字符。

来源:

和Docker不同,K8S的创造者,是众人皆知的行业巨头——Google。然而,K8S并不是一件全新的发明。它的前身,是Google自己捣鼓了十多年的Borg系统。K8S是2014年6月由Google公司正式公布出来并宣布开源的。同年7月,微软、Red Hat、IBM、Docker、CoreOS、 Mesosphere和Saltstack 等公司,相继加入K8S。之后的一年内,VMware、HP、Intel等公司,也陆续加入。2015年7月,Google正式加入OpenStack基金会。与此同时,Kuberentes v1.0正式发布。目前,kubernetes的版本已经发展到V1.1。

 

K8S的架构概括:

一个K8S系统,通常称为一个K8S集群(Cluster)。

 

这个集群主要包括两个部分:

 

 

 

 

一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。深入来看这两种节点。首先是Master节点。

 

 

 

Master节点包括API Server、Scheduler、Controller manager、etcd。

 

1,API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。

 

2,Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

 

3,Controller manager负责管理控制器,相当于“大总管”。

 

然后是Node节点。

 

 

Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。这段不太好理解,跳过吧。

Docker,不用说了,创建容器的。

Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

Kube-proxy,主要负责为Pod对象提供代理。

Fluentd,主要负责日志收集、存储与查询。

 

 

标签:容器,K8S,虚拟机,节点,搬运,镜像,docker,通俗,Docker
来源: https://www.cnblogs.com/lish007/p/16086131.html