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。