Docker&VM
Docker
是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux
机器或 Windows
机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
VM
,全称虚拟机(Virtual Machine
)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
Docker 优点
- 一处创建,到处运行
- 轻量化,资源利用率高
- 启动快,性能好
- 和基础设施解耦
Docker 缺点
资源隔离不如 VM
彻底。
Docker 架构
VM 架构
总结
虚拟机技术相对已经非常成熟,而 Docker
技术正处于快速发展中。虚拟机技术通过 Hypervisor
对底层硬件进行虚拟化,从而实现对底层资源的占用,创建出一个完整的操作系统。而 Docker
直接运行在 HOST
的内核之上,因为它自己没有内核,它底层基于 LXC
技术实现,结合 NameSpaces、CGroups、Chroot、AUFS
等技术对 HOST
的计算,网络,存储等资源进行隔离占用,从而实现了一个基于 HOST
的轻便,灵活,低开销的虚拟化应用容器环境。
展望
随着近年 Docker
商业化步伐的迈进,原本开源的 Docker
也已经不再是曾经的 Docker
了。同时 kubernetes
也在 v1.20
版本的 Changelog
中宣布弃用 Docker
。种种迹象表明 Docker
将逐步被替代,对于开发者而言,开源版本的 Docker
依然可以免费试用,但是在大背景下,开发者们也清楚不被开发者支持的开源不会长久,此时,一个熟悉的身影出现在人们的视野中,它就是 containerd
,containerd
是从 Docker
中分离出来了一个项目,其支持 CRI(Container Runtime Interface)
,从而可以直接替代 Docker
成为 K8S
的容器运行时,而且相比 Docker
可以减少一层调用,性能更加好,此举可谓大妙。