概述
看过很多Docker和k8s的视频和笔记,却依然搞不清楚这两者的区别与关系。鉴于最近在工作中频繁在k8s集群进行一些操作,便想基于自己这段时间的实践,谈谈自己对docker和k8s的理解。
Docker和虚拟机的纠葛
记得刚上大学那会儿,选的方向是“金融大数据”,有一门课程教授hadoop,这门课的最终考核之一是:在虚拟机上搭建hadoop分布式环境。搭建hadoop分布式集群意味着至少需要两台虚拟机,在当年笔记本内存条普遍只有4G的时代,在VMWare上启动两台虚拟机并进行一系列的配置操作可谓是让人痛苦异常。而VMWare的本质就是虚拟化技术,在一台物理笔记本上构建两台虚拟机,每台虚拟机都拥有一套完整的操作系统,再在这个操作系统上运行所需要的应用进程。
而本文提及的Docker,其本质上也是虚拟化技术,但是它比虚拟机更加轻量,它使用“容器”的概念,对进程进行封装隔离,没有自己的操作系统内核。换句话说,多个容器的底层是共用同一个操作系统的,没有进行硬件虚拟。如果基于docker搭建hadoop集群,将不再需要启动多台虚拟机,而可以在一台机器上通过构建多个容器进行实现,这种方式显然更加方便快捷且轻量。
官网上用这两张图来描述了传统虚拟机和Docker的主要区别: