对于习惯了KVM的自己,Docker来的真是很突兀,莫名就发现技术群里一天到晚都在聊docker、k8s了。
首先,区别一下二者:
自己目前常用的KVM技术,顾名思义是基于内核层面的虚拟化。传送门(KVM学习笔记)
而Docker旨在对进程进行封装隔离,属于操作系统层面的虚拟化技术。
网上这张图说的很明确:
如果仅仅只是看二者环境隔离的程度,容器化的隔离程度是很难和系统级的虚拟化带来的隔离相比的。然而,既然KVM已经如此完美,为何Docker还是被越来越多地放到了生产环境中呢?
Docker是基于Linux内置的LXC(Linux container)功能实现的一个应用容器引擎,Docker让开发者可以打包他们的应用及依赖环境到一个可移植的容器中,然后可以将这个容器快速部署到开发、测试或生产环境中。Docker镜像不需要像一套全新操作系统那样进行完整的引导过程,于是,Docker就节省了硬件虚拟以及运行完整操作系统等的额外开销。从而,Docker软件包的体积就能得到大幅压缩,同时,应用程序运行在共享式计算资源之上时也将具备更为显著的轻量化优势。
简言之,Docker容器在启动速度、磁盘占用、性能、和单机可部署数量上都可以吊打KVM虚拟机。Docker的部署和迁移可以避免运行环境的调整维护,所以在短期测试维护时效率非常高!
但是,需要注意,Docker容器对windows环境应用无能为力。而且就像之前提到的,相比纯VM的虚拟化方式,容器方案还存在隔离程度欠缺,网络管理过于简单,环境log等数据不便收集的问题。
一句话,团队初期缺少专业运维时,Docker可以在临时测试中发挥出很显著的作用,但作为大规模的应用部署显得有点无力。(然而,在各家钻研自己的Docker运维管理方案的过程中,k8s的出现,在一定程度上推动了Docker的落地。)
话题之外
一个新技术的出现,除了其优点,还在于其对现有应用场景的覆盖重合程度,就像LVS发展了这么久,却无法取代Nginx是一个道理。容器化可以作为机房部分服务的运维解决方案逐渐迁移,但KVM还能再战500年~
评论列表,共 0 条评论
暂无评论