一.产生背景?
上图为软件开发过程,从软件开始开发到对软件进行测试,代码可能从程序员的笔记本电脑切换到测试服务器,或者从一台物理服务器切换到公有云/私有云上;代码依赖的运行库版本可能会发生变化,比如开发时用的python2.7, 但生产机上用的python3;也可能会代码运行的操作系统发生变化,比如开发及用的ubuntu,生产机用的redhat。
因此,应用程序开发人员需要花费额外的精力去处理这种环境问题(infrastructure问题),有没有一种办法能使的我不去考虑它们呢?
有,使用容器技术。
二.长什么样子?
没有容器化之前:
虚拟机是在物理服务器的上层用软件来模拟特定的硬件系统。Hypervisor位于硬件和系统之间,是创建虚拟机必须的一个部分。虚拟机软件必须使用Hypervisor作为一个中间层,是虚拟机技术的核心,当宿主操作系统启动虚拟机时,会通过hypervisor给虚拟机分配内存,CPU,网络和磁盘等资源,并加载虚拟的操作系统,因而需要消耗宿主机大量的物理资源。
容器化之后:
一台宿主机上运行的多个容器化应用共享这台宿主机操作系统的内核,因而不需