使用容器进行弹性伸缩非常方便。例如,通过监控网络延迟或其他业务相关指标来监控服务接口速度。当这个业务指标发现网络延迟增加、某个服务的网络延迟增加、或者某个服务的请求数量达到某个阈值时,就会开始自动扩容的关系逻辑。自动扩容对于用户来说非常方便。事实上,这意味着添加许多应用程序实例。这是指 Web 实例。每个 Web 实例都封装在一个容器中。当需要扩容时,通过调度平台调度容器的实例,快速扩容应用实例。同时,在资源层面,如果企业管理一层私有云IaaS,那么容器云就可以调度IaaS接口,调度或者生成更多的虚拟机来请求更多的计算资源,进而在计算资源方面,然后分配和调度容器。弹性扩容其实很容易理解,就是调度更多的实例。
还有一点就是将应用程序所依赖的环境和应用程序本身进行封装。假设安装了应用程序,并且通过运行Java编写了War包程序,那么这也需要容器内的基础环境,假设是Linux,以及各种配置文件,基于xml的配置文件。交付时处理 War 包和配置文件的方式有很多种。开发和测试最方便的方式就是把里面的东西都打包起来,把程序和配置文件放在一起。这样一来,形象就会完全自立,就会出现麻烦的插曲。例如,程序中的一行代码被更改,则必须创建新的War包并重新打包镜像;或者如果配置文件发生更改,则必须重新打包整个映像。企业级IT应用程序有很多各种依赖项,因此整个打包过程可能不会在几秒钟内完成。此时,相对恒定的部分是且部分相关的。因此,它们可以作为基础镜像放置在容器中。那么每当应用发布的时候,War包变化最频繁,但是程序和镜像是可以分离的。这样每次上线时基础镜像都保持不变,新的应用可以复用现有的基础镜像,只需要替换War包即可。在这种情况下,您仍然可以利用它带来的一些隔离、资源限制和其他轻量级部署特性。