容器是包含在任何环境中运行所需的所有元素的软件包。这样一来,容器可以虚拟化操作系统,并在任何地方运行,不管目标环境是私有数据中心、公有云,还是开发者的个人笔记本电脑。从 Gmail 到 YouTube 和 Google 搜索,Google 的所有产品都是在容器中运行。 容器化让我们的开发团队可以快速行动、高效部署软件,并以前所未有的规模运营。我们不但积累了有关如何运行容器化工作负载的丰富知识,而且一直与社区积极分享这些知识:从早期为 Linux 内核贡献 cgroup,到开放我们内部工具所采用的设计源代码作为 Kubernetes 项目,均是如此。
容器是轻量级应用软件包,它还包含依赖项,例如编程语言运行时的特定版本和运行软件服务所需的库。
容器支持在操作系统级别轻松共享 CPU、内存、存储空间和网络资源,并提供了一种逻辑打包机制,以这种机制打包的应用可以脱离其实际运行的环境。
责任分离
容器化使开发者和 IT 运营团队的责任泾渭分明,开发者专注于应用逻辑和依赖项,而 IT 运营团队可以专注于部署和管理,不必为应用细节分心,例如具体的软件版本和配置。
工作负载可移植性
容器几乎能在任何地方运行,极大减轻了开发和部署工作量:在 Linux、Windows 和 Mac 操作系统中;在虚拟机或物理服务器上;在开发者的机器或本地数据中心的机器上;当然还有在公有云上。
应用隔离
容器会在操作系统级别虚拟化 CPU、内存、存储和网络资源,为开发者提供在逻辑上与其他应用相隔离的操作系统视图。
批处理
容器非常适合批处理工作负载,支持任务并行运行,并可根据需求灵活扩缩资源。
混合云部署
容器可让您跨混合云环境部署应用,兼具灵活性与可移植性。
您可能已经很熟悉虚拟机:在主机操作系统上运行,可以访问底层硬件的客机操作系统,例如 Linux 或 Windows。容器经常与虚拟机 (VM) 进行比较。与虚拟机相似,容器也让您可以将应用与库和其他依赖项打包,提供独立环境来运行您的软件服务。但是,我们从下方可以看到,两者的相似性仅此而已,因为容器为开发者和 IT 运营团队提供了更加轻量级单元,具有众多优势。
容器提供了一种逻辑打包机制,以这种机制打包的应用可以脱离其实际运行的环境。利用这种脱离,不管目标环境是私有数据中心、公有云,还是开发者的个人笔记本电脑,您都可以轻松、一致地部署基于容器的应用。
敏捷开发
容器使开发者可以更快地移动数据,无需担心依赖项和环境。
高效运营
容器是轻量化的,可让您仅使用所需的计算资源。这使您可以高效运行应用。
在任何地方运行
容器几乎可以在任何地方运行。无论您希望在什么地方运行软件,都可以使用容器。
激活微服务能力
容器天生契合微服务架构,能够为每个服务提供隔离性、可移植性和可伸缩性。每个微服务都可以封装在独立容器中,并单独部署。
应用现代化改造
容器可将现有应用封装为可移植、可伸缩的格式,从而助力应用现代化改造。这将有助于组织将传统应用迁移至云端,或采纳更敏捷的开发模式。
CI/CD 流水线
容器有助于构建一致且可复现的 CI/CD 流水线,从而可靠地完成应用的构建、测试与部署。