容器采用职责分离原则,开发人员只需关心容器中运行的应有程序,而运维人员只需关心如何管理容器。容器设计的目的就是要加强开发人员写代码的开发环境与应有程序要部署的生产环境的一致性,从而降低那种开发时一切正常、肯定是运维的问题的风险。
容器的目标之一是降低代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性、易于构建、易于协作。
容器还鼓励面向服务的架构和微服务架构。推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型。分布式部署应用程序,扩展和调试应用程序都变得非常简单。
容器就是: 一个镜像、一系列标准操作、加一个执行环境。镜像由一系列指令一步一步构建出来,如: 添加一个文件、执行一个命令、打开一个端口。也可以把镜像当做容器的源代码。用户可以把自己的应用程序或服务打包放进容器。镜像是容器生命周期的构建或打包阶段,容器是启动或执行阶段。
容器借助了标准集装箱的概念。集装箱将货物运往世界各地,容器则运载软件。镜像是容器的货物。镜像可以被创建、启动、关闭、重启、销毁。容器改变了传统软件的交付和运行方式,将软件与环境打包在一起,以镜像的方式交付,让软件运行在标准的环境中,符合云计算的要求。
容器可以为各种测试提供很好的沙盒环境。容器本身具备标准性的特征,非常适合为服务创建构建块。可以加速本地开发和构建流程,使其更高效、更轻量化。本地开发人员可以构建、运行、分享容器。容器可以在开发环境中构建,轻松提交到测试环境中,并最终进入生产环境。能够让应用程序在不同的环境中,得到相同的运行结果。
容器一部分取代了配置管理工具。容器需要在主机上安装、管理和部署,主机还是需要被配置管理工具管理起来。