Un contenedor es una tecnología de virtualización diseñada para crear y dar soporte a un factor de forma portátil para las aplicaciones; es decir, facilita la implementación de una aplicación en diversas plataformas. Un contenedor empaqueta todos los requisitos de la aplicación, como el código de la aplicación, las dependencias necesarias (por ejemplo, bibliotecas) y el entorno de ejecución, en un formato que puede transportarse y ejecutarse de forma independiente en distintas plataformas. Los contenedores proporcionan una abstracción de la aplicación respecto al entorno de ejecución típico del sistema operativo, permitiendo que esta se ejecute de manera consistente en diferentes entornos.
Docker es el formato de implementación de contenedores más conocido; sin embargo, existen otras tecnologías de contenedores como rkt/CoreOS, containerd, contenedores Hyper-V y tecnologías de nivel inferior como cgroups y namespaces (ambas se utilizan para el aislamiento de aplicaciones de forma similar a los motores de contenedores, pero no proporcionan portabilidad aislada del mismo modo que los contenedores). Puede utilizar herramientas de plataforma como Docker o rkt para gestionar contenedores directamente, pero la mayoría de las implementaciones utilizan una herramienta de orquestación como Kubernetes para la gestión de contenedores. Aunque no es necesario, Kubernetes se está convirtiendo en la herramienta estándar para las implementaciones de contenedores de nivel de producción.
Los contenedores se han convertido en una opción arquitectónica muy popular porque permiten dividir una aplicación en componentes más pequeños y discretos, facilitando la separación entre los propietarios de la infraestructura y los desarrolladores. Este enfoque es beneficioso durante el desarrollo, ya que permite que equipos diferentes trabajen en paralelo en distintos componentes, y también durante la implementación, ya que asegura la transportabilidad de un contenedor entre diversas plataformas. Además, los contenedores proporcionan una herramienta más eficiente para los administradores de aplicaciones e infraestructuras, ya que permiten crear plataformas inmutables que permiten a los desarrolladores publicar contenedores de aplicaciones con requisitos conocidos, sin necesidad de ser responsables de esos requisitos.
El término contenedorización de aplicaciones se utiliza a menudo para referirse al proceso de migración de una aplicación desde un entorno de ejecución Linux estándar a un factor de forma autónomo que puede ejecutarse en muchos entornos. Muchas empresas están bien adentradas en su viaje de contenedorización y ya han comenzado la migración a contenedores básicos o a una estrategia de gestión de contenedores más completa utilizando una herramienta como Kubernetes.
Todos los productos NGINX pueden ejecutarse en contenedores, incluidos NGINX Open Source, NGINX Plus (opcionalmente con NGINX App Protect), NGINX Unit, NGINX Service Mesh, NGINX Ingress Controller, o se basan en tecnologías de contenedores(NGINX Controller).