容器是一种虚拟化技术,旨在为应用程序创建并维护可移植的标准化运行形态——换言之,它能够轻松实现应用程序在各类不同平台上的快速部署。容器将应用的所有要求(应用代码本身、依赖项(例如应用运行所需的库)以及应用及其依赖项的运行时环境)打包成可以跨平台传输和独立运行的形式。 容器是来自典型操作系统运行时环境的应用的抽象。
Docker 是最著名的容器实现格式;然而,还有其他容器技术,例如 rkt/CoreOS、containerd、Hyper-V 容器,以及 cgroups 和 namespaces 等低级技术(它们都用于类似于容器引擎的应用隔离,但不像容器那样提供隔离的可移植性)。 您可以使用 Docker 或 rkt 等平台工具直接管理容器,但大多数部署都使用Kubernetes等编排工具进行容器管理。 虽然不是必需的,但 Kubernetes 正在成为生产级容器部署的标准工具。
容器已经成为一种非常流行的架构选择,因为它们可以将应用分解为更小的、离散的组件——从而允许基础设施所有者和开发人员之间的分工。 这在开发过程中是有益的,因为这意味着不同的团队可以并行处理不同的组件;在部署过程中,它使给定的容器能够在平台之间实现可移植性。 容器还为应用和基础设施管理员提供了更简化的工具,因为它们可以提供不可变的平台,允许开发人员将应用容器发布到已知需求的集合中,而无需拥有这些需求。
应用容器化这一术语通常用于表示将应用从标准 Linux 运行时环境迁移到可以在多种环境中运行的独立形式的过程。 许多企业已开始深入容器化进程,并已开始使用 Kubernetes 等工具迁移到基本容器或更全面的容器管理策略。
所有 NGINX 产品都可以在容器中运行(包括NGINX Open Source 、 NGINX Plus (可选配NGINX App Protect )、 NGINX Unit 、 NGINX Service Mesh 、 NGINX Ingress Controller )或者基于容器技术( NGINX Controller )构建。