容器初识:内核轻量级的操作系统层虚拟化技术
一. 容器
容器解决什么问题?
容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。
如何解决问题?
一个容器包含了完整的运行时环境:一个应用、这个应用所需的全部依赖、类库、其他二进制文件、配置文件,它们统一被打入了一个包中。通过将应用平台和其依赖容器化,操作系统发行版本和其他基础环境造成的差异,都被抽象掉了。
运行着容器应用的服务器只需要一个操作系统,而每个容器都可以和别的容器共享同一个操作系统内核。而不像虚拟化技术,需要一个管理虚拟机软件的中间层,以及运行在这个中间层之上的三个独立操作系统。
使用容器有什么特点?
- 轻量:一个容器的文件大小可能只有几十M,但是一个拥有完整操作系统的虚拟机却可能是几个G。
- 启动快:容器中应用的启动几乎可以瞬间完成,这意味着,如果需要部署更多的容器,它们的实例化可以很快完成;如果不需要这些容器了,也可以很快将它们从宿主服务器上释放掉。
- 易于移植:一次构建,随处部署
- 弹性伸缩:Kubernetes、Swam、Mesos这类开源、方便、好使的容器管理平台有着非常强大的弹性管理能力
容器生态:
OCI(Open Container Initiative) 致力于建立一个容器运行时和镜像格式的规范,其核心目的在于避免容器生态的分化,确保在不同容器引擎上构建的容器可以相互兼容, runc 是其一个参考实现。包括:runtime spec 和 image spec
- 容器运行时标准 (runtime spec):用户在打包、部署应用程序后,可以自由选择不同的容器Runtime。
- 容器镜像标准(image spec):镜像打包、建立、认证、部署、命名也都能按照统一的规范来做。
另外,为隔离各个容器引擎(比如docker、Pouch等)之间的差异,通过统一的接口与各个容器引擎之间进行互动。kubernetes推出 CRI(container runtime interface)
容器的主要应用场景?
- 传统应用容器化:提高安全性和可移植性
- 持续集成和持续部署:提高软件交付速度
- 模块化:加速应用架构现代化进程。一个复杂的应用可以被细分成小的模块(比如数据库、应用前端等等),而不是将它运行在某一个容器中。这种方式通常被称为“微服务”
- IT基础设施优化:充分利用基础设施。企业可以整合数据中心,将并购而来的IT资源进行整合,从而获得向云端的可迁移性,同时减少操作系统和服务器的维护工作
参考:https://baijiahao.baidu.com/s?id=1609932946964681808&wfr=spider&for=pc
https://www.cnblogs.com/qcloud1001/p/9273549.html
二. 富容器技术
帮助存量业务容器化
富容器:提供了有效路径,帮助业务在单个容器镜像中除了业务应用本身之外,还打包更多业务所需的运维套件、系统服务等;同时相比于较为简单的单进程容器,富容器在进程组织结构层面,也有着巨大的变革,容器运行时内部自动运行 systemd 等管家进程。
如何实现:
容器启动时将镜像的文件系统作为容器的 rootfs。运行上,内部运行进程(pid=1 的 init 进程、容器镜像的 CMD、容器内部的系统 service 进程、用户自定义运维组件)+ 容器启停时的钩子方法(prestart hook 和 poststop hook)
三. PaaS/Cloud Native
“物理机 从小型机 到大型机, 单机的能力达到瓶颈之后,人们开始采用集群方式来提高能力,最终将集群又抽象为了一个超级计算机。”
PaaS/Cloud Native 之后,向用户交付的,不再是一个个物理机,而是直接的运行一个服务的能力,就好像物理机提供进程的运行能力一样。服务运行时包含:对外接口;计算;存储,三者独立变化和升级、调度、移动,互不干扰。
云原生领域,CNCF 基金会推崇的众多先进理念,绝大多数都建立在业务容器化的基础之上。倘若企业业务在云原生的入口容器化方面没有踩准步点,后续的容器编排、Service Mesh 等行业开源技术红利更是无从谈起。
Service Mesh:
是用于处理服务间通信的基础设施层,用于在云原生应用复杂的服务拓扑中实现可靠的请求传递。在实践中,Service Mesh通常是一组与应用一起部署,但对应用透明的轻量级网络代理。
参考:
https://baijiahao.baidu.com/s?id=1609932946964681808&wfr=spider&for=pc
https://www.cnblogs.com/qcloud1001/p/9273549.html
https://www.jianshu.com/p/efb6dba9fa6a
https://www.infoq.cn/article/alibaba-pouch