Docker 和 Kubernetes 的关系

官方定义1:Docker  是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。
官方定义2:Kubernetes 是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

Docker 和 Kubernetes 的产生
Docker 一般是和传统的虚拟技术对比
传统的虚拟技术:将物理硬件虚拟成多套硬件后,需要在每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序,非常重。

Docker :Docker 容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker 引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核,显然比传统虚拟机更轻便。

Kubernetes :每个集群有多个节点,每个节点可创建多个容器,Kubernetes 就是管理这些应用程序所在的小运行环境(container)而生。

Docker 和 Kubernetes 的区别
在一般的认知中,Kubernetes 和 Docker  是互补关系:

Docker 属于下层——容器引擎;
Kubernetes 属于上层——编排调度层。
Docker  源于 Linux Container,可以将一台机器的资源分成 N 份容器,做到资源的隔离,并将可运行的程序定义为标准的 Docker  image;Kubernetes 则可以把不同机器的每份容器进行编排、调度,组成分布式系统。

适用场景
近几年,Kubernetes 已经成为自有机房、云上广泛使用的容器编排方案,最广泛的使用方式是 Kubernetes+Docker 。从 DevOps 人员的角度,一面用 kubectl 命令、Kubernetes  API 来操作集群,一面在单机用 Docker  命令来管理镜像、运行镜像。

单独用 Docker  的情况,在一些公司的场景里面也是有的。一种场景是“只分不合”,把一台机器用 Docker  做资源隔离,但是不需要将多容器“编排”。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。