关于 VMware、Docker、K8s 的一些简单理解

VM(VMware)是很古早的一种操作系统虚拟技术:

会在宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
也就是,麻雀虽小五脏俱全,搞了个全套拷贝,比如可以再Mac电脑上安装一个Windows的虚拟操作系统;
但毕竟还是比真正的操作系统轻便简单一些,如果主机配置毕竟高,多搞几个VM也未尝不可;

大白话:克隆,或者叫 深拷贝

Docker是Container,一种容器技术:

会在宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用:
当然了,没有操作系统,怎么运行程序呢?
所以需要再在Docker中创建一个操作系统的镜像文件,比如ubuntu,这样就能将ubuntu系统集成到Docker中,运行的应用就都是ubuntu的应用了。

也因此,Docker运行时,会直接调用宿主的硬件资源,而不用虚拟化操作系统和硬件资源,所以操作速度快,占用内存也更小;
虚拟机开机一般按分钟起步,而Docker只需要几秒钟;

另外,由于 Docker 属于 写时复制 (copy-on-write) 模型,使得修改应用程序也非常迅速;
综上所述,使得 Docker 容器拥有很高的性能,使用户更充分的利用宿主机器的系统资源;

大白话:跑得快,占用少,创建一个VM的资源能用来创建N个Docker

Docker 的三个基本概念:

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

镜像(Image):
操作系统分为 内核 和 用户空间; 例如 Linux,内核启动后,会挂载 root 文件系统为其提供用户空间支持;
而 Docker 镜像(Image),就相当于一个 root 文件系统,为了节省资源,可选择镜像官方推出的最小系统的 root 文件系统;

大白话:iPhone xx mini-mini-mini

容器(Container):
如果将 镜像(Image)比作面向对象程序设计中的 类(Class) ,容器(Container)就是 将类实例化(new Class());
镜像是静态的定义,容器是镜像运行时的实体, 可以被创建、启动、停止、删除、暂停等;

仓库(Repository):
经过上面的容器这一步折腾后,一个符合我们要求的Container就诞生了;
如果需要在其它机器使用这个镜像呢,总不能再折腾一遍吧?所以,需要把这这套环境保存下来,也就是搞个仓库,以备不时之需。
这也就衍生出一个需求,一个可以集中存储、分发镜像的服务,也就是 Docker Registry。

大白话:虚拟U盘 (80后小伙伴是不是听说过诸如,番茄花园、雨林木风、深度,以及 一键GHOST?)

k8s

k8s,是 kubernetes 的简称方式,类似 i18n 的叫法;
它用来管理 Docker 的,是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能;
所以,它不是只用来支持Docker,也可以支持其他容器技术。
说白了,大家不想手动的一个个去创建、维护 Docker,所以就用了 k8s。

你可能感兴趣的:(docker)