什么是Docker和kubernetes?
-
Docker:Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。
-
kubernetes:是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
Docker与传统技术比较
1.虚拟化
-
传统虚拟技术在将物理硬件虚拟成多套硬件后,需要再每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序。
-
Docker容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核。
2.部署
-
传统技术就是虚拟出的虚拟机装操作系统。
-
Docker是在容器引擎管理下的容器。
举个不恰当例子:一块很大的蛋糕,要求把这个蛋糕分成8份,每份上面的装饰都不一样。传统技术就是,把蛋糕切成8份分给8个蛋糕师,蛋糕师再设计烹制好后拼接起来;而Docker就好比是,蛋糕师将已经做好的蛋糕样式,像倒模一般的放在主蛋糕上,就利用整个主蛋糕,而不是像前面那种方式,先分配资源给蛋糕师。
上面这个图是在这些具体运行环境上进行真实应用部署时的情况,传统方式是将所有应用直接部署在同一个物理机器节点上,这样每个App的依赖都是完全相同的,无法做到App之间隔离,当然,为了隔离,我们也可以通过创建虚拟机的方式来将App部署到其中,但这样太过繁重,故比虚拟机更轻便的Docker技术出现,现在我们通过部署Container容器的技术来部署应用,全部Container运行在容器引擎上即可。这个时候为了管理这些容器,就出现了以kubernetes为代表的容器集群管理系统.
kubernetes就是管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。 详细介绍见:[https://www.bootwiki.com/note/docker-k8s-10-minutes.html](https://www.bootwiki.com/note/docker-k8s-10-minutes.html)