容器化是一种软件开发方法,其中应用程序或服务、其依赖项和其配置(抽象为部署清单文件)作为容器映像打包在一起。容器化应用程序可以作为一个单元进行测试,并作为容器映像实例部署到主机操作系统(OS)。
正如运输集装箱允许通过船舶、火车或卡车运输货物,而不考虑其中的货物一样,软件容器作为软件部署的标准单元,可以包含不同的代码和依赖项。通过这种方式,容器化软件使开发人员和IT专业人员能够在几乎不需要修改的情况下跨环境部署它们。
容器还将共享操作系统上的应用程序彼此隔离。容器化应用程序在容器主机上运行,容器主机反过来在操作系统(Linux或Windows)上运行。因此,容器的占用空间比虚拟机(VM)映像小得多。
每个容器可以运行一个完整的web应用程序或服务,如图2-1所示。在本例中,Docker host是一个容器主机,App1、App2、Svc 1和Svc 2是容器化的应用程序或服务。
图1:在容器主机上运行的多个容器
容器化的另一个好处是可伸缩性。通过为短期任务创建新容器,可以快速扩展。从应用程序的角度来看,实例化镜像(创建容器)类似于实例化服务或web应用程序之类的进程。但是,为了提高可靠性,当您跨多个主机服务器运行同一映像的多个实例时,通常希望每个容器(映像实例)在不同的主机服务器或不同容错域中的虚拟机中运行。
简言之,容器在整个应用程序生命周期工作流中提供了隔离、可移植性、灵活性、可伸缩性和控制的好处。最重要的好处是在开发人员和操作人员之间提供了环境隔离。
架构师的宝库,每天一篇,开拓你的视野和深度。分享企业架构,业务架构,应用架构,数据架构,技术架构,安全架构等。讨论架构框架,规划,治理,标准,落地。交流新兴的架构风格和模型。如微服务,事件驱动,微前端,大数据,数仓,物联网,人工智能架构。