虚拟容器化技术
作者寄语:
首先我们需要学习一个知识,或多或少会有所目标或需求。那么我在对于选择的时候会进行相对应的分析,优中择优?
什么是虚拟容器化化技术?
IT里的容器技术是英文单词Linux Container的直译。container这个单词有集装箱、容器的含义(主要偏集装箱意思,如果要形象的理解Linux Container技术的话,还是得念成集装箱会比较好。我们知道,海边码头里的集装箱是运载货物用的,它是一种按规格标准化的钢制箱子。集装箱的特色,在于其格式划一,并可以层层重叠。
为什么需要使用虚拟化技术?
不知你是否也出现过以下这么些问题?
- 在工程中迁移和拓展项目难度大,生产力低
- 工程部署上线过程十分漫长
- 购买云服务器、物理服务器价格不菲
- 物理服务器资源利用率较低
- 等等
那么问题来了,该如何降低迁移和拓展项目难度,提高生产力。部署快捷,勤俭节约? 此时虚拟化技术便随之应用而生,其原理与原理就是它的名字“虚拟化”,,予以抽象、转换后呈现出来并可供分割、组合为一个或多个“孪生兄弟”。咱们经常使用到虚拟机,虚拟环境。等等。那么它的优势也显而易见。 那么虚拟容器是什么,它与虚拟化又有什么不同? 传统虚拟化技术从操作系统层下手,目标是建立一个可以用来执行整套操作系统的沙盒独立执行环境,习惯以虚拟机(Virtual Machine)来称呼。而Container技术则是直接将一个应用程序所需的相关程序代码、函式库、环境配置文件都打包起来建立沙盒执行环境,为了和传统虚拟化技术产生的虚拟机区分,Container技术产生的环境就称为Container。 如果说虚拟化是将房子分成房间,那么虚拟容器化技术就是将“房间”里的柜子分层。
虚拟容器化技术的优与劣:
优势:
- 更高效的系统资源利用率。 相比虚拟化技术,不需要额外的hypervisor层,会有更高的性能和效率。单台高配物理机可以跑上千个docker容器。
- 启动非常快,秒级时间 这是由于直接运行于宿主机内核,需要启动完成的操作系统,因此可以做到秒级、甚至毫秒级的启动时间
- 一致的运行环境 容器的镜像封装应用和应用依赖的环境,确保了应用运行环境的一致性,避免了开发环境、测试环境、生产环境不一致的问题
- 持续交付和部署 一次创建和配置之后,可以在任意地方运行。测试人员可以将容器与持续集成系统结合,在pipeline中自动化的完成集成测试,同时运维人员可以通过持续部署系统对应用自动完成部署。
- 更易于迁移 如何你现在运行在哪里,都可以轻松迁移到物理机、虚拟机、公有云、私有云中,且不需要担心运行环境变化导致应用无法运行的问题
不足:
- 容器隔离性问题,也可以是安全性问题,只要是由于共用内核和Namespace实现隔离的限制
- 容器里面不存放数据,容器中的数据会随容器消失而消失,特别是对有状态的应用需要做数据的持久化设置
- 容器的粒度更细,管理复杂度更大,在生产环境管理大量的容器带来了更大的挑战,有赖于K8S、Swarm等容器编排