容器技术发展快速,就算项目上没有用到,但总会听到接触到,做为一个刚刚接触docker的新人来说,docker与Kubernetes(k8s)这些名词总会让人迷糊,所以就自行整理了一下容器相关的名称并加以说明,希望能帮到些许朋友。

Docker容器技术

官方的解释是“基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术”。

这官方的解释看起来是不是很蒙?其实你可以将docker看成是运行在操作系统中的《linux系统虚拟机》进程,与虚拟机不同,docker并没有像虚拟机那样去集成系统硬件环境,而基于linux系统层面的进程隔离、虚拟化技术。这种进程隔离技术保证了进程不会冲突于系统本身,同时还可以在这隔离进程进行linux应用安装(如:nginx\mysql\redis…)都可以一层一层地安装到docker隔离进程里面进行打包保存,正是因为可层层打包、集装这种特性,所以用了docker这个名称。

docker-compose

docker官方提供用于容器定义、编排的单机管理工具

为什么有docker-compose?要理解这个东西,还是从docker容器使用方式说起,如果要用容器搭建一个lnmp的运行环境?那么你会将这几个应用打包到一个容器,还是打包到多个容器呢?更多情况下是nginx\mysql\php各自一个容器环境,在这种情况下容器的修改更新、相互调用关系、启动顺序,都需要一个一个手动执行,这样效率会很慢,所以官方提供了docker-compose这么一个工具,通过compose可以使用yml对容器进行声明,同时可以用docker-compose up命令启动所有容器

Machine

docker官方提供的工具:可以在虚拟主机上安装docker引擎,可以配置管理多个远程docker主机

swarm

docker官方提供的工具,用于容器集群管理,与compose不同的是可以管理容器集群,而compose是单机环境管理docker。

Kubernetes集群

又称为k8s,跟swarm一样是用于管理容器集群,k8s出身于google,是google基于多年的容器经验构建而来,同时把集群带到了全新的高度,k8s跟swarm的cli命令不太相同,而且较为复杂,需要一定的学习成本。

k3s

一个轻量级的k8s,主要用于物联网、边缘计算环境中运行在x86、ARM64和ARMv7处理器上的小型Kubernetes集群管理。

k9s

k8s 集群管理的工具,提供了一个终端 UI 来与您的 Kubernetes 集群进行交互。https://github.com/derailed/k9s

K8S单机集群

k8s是基于多台机器的容器管理,集群环境基本上至少需要3台主机,并不适用于单机,并不利于开发测试的单机环境(这也是k8s上手困难的一部分原因)

minikube

这是k8s社区维护的单机Kubernetes集群,支持Kubernetes大部分功能;

kind

是用go语言实现的单机Kubernetes集群,相关资料可见:https://kind.sigs.k8s.io/

dind

全称是docker in docker,就是在docker里面再使用docker,也可以用来搭建swarmk8s集群。