容器和 Docker 简介

小窍门

此内容摘自电子书《适用于容器化 .NET 应用程序的 .NET 微服务体系结构》,可以在 .NET Docs 上获取,也可以下载免费的 PDF 以供离线阅读。

适用于容器化 .NET 应用程序的 .NET 微服务体系结构电子书封面缩略图。

容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 可将容器化应用程序作为单元进行测试,并将其作为容器映像实例部署到主机作系统(OS)。

正如运输容器允许货物通过船舶、火车或卡车运输,无论货物在里面是什么,软件容器都充当可包含不同代码和依赖项的软件部署的标准单元。 这样容器化软件,使开发人员和 IT 专业人员可以在无需或几乎无需修改的环境中部署它们。

容器还会在共享 OS 上相互隔离应用程序。 容器化应用程序在容器主机之上运行,而容器主机则运行在 OS(Linux 或 Windows)上。 因此,容器的占用空间明显小于虚拟机(VM)映像。

每个容器都可以运行整个 Web 应用程序或服务,如图 2-1 所示。 在此示例中,Docker 主机是容器主机,App1、App2、Svc 1 和 Svc 2 是容器化应用程序或服务。

显示 VM 或服务器中运行的四个容器的图表。

图 2-1. 在容器主机上运行的多个容器

容器化的另一个优势在于可伸缩性。 可以通过为短期任务创建新容器来快速横向扩展。 从应用程序的角度来看,实例化映像(创建容器)类似于实例化服务或 Web 应用等进程。 但是,为了可靠性,在多个主机服务器上运行同一映像的多个实例时,通常希望每个容器(映像实例)在不同的主机服务器或不同容错域中的 VM 中运行。

简言之,容器提供在整个应用程序生命周期工作流中隔离、可移植性、敏捷性、可伸缩性和控制的优势。 最重要的好处是开发与 Ops 之间提供的环境隔离。