Un conteneur est une technologie de virtualisation conçue pour créer et prendre en charge un facteur de forme portable pour les applications , en d'autres termes, pour faciliter le déploiement d'une application sur une gamme de plates-formes différentes. Un conteneur regroupe toutes les exigences de l' application (le code de application lui-même, les dépendances telles que les bibliothèques dont l' application a besoin pour s'exécuter et l'environnement d'exécution de l' application et de ses dépendances) dans un format qui peut être transporté et exécuté indépendamment sur plusieurs plateformes. Les conteneurs sont une abstraction d’une application de l’environnement d’exécution typique du système d’exploitation.
Docker est le format d'implémentation de conteneur le plus connu ; cependant, il existe d'autres technologies de conteneur telles que rkt/CoreOS, containerd, les conteneurs Hyper-V et des technologies de niveau inférieur comme les cgroups et les espaces de noms (tous deux utilisés pour l'isolation des application de manière similaire aux moteurs de conteneur, mais ne fournissant pas de portabilité isolée de la même manière que les conteneurs). Vous pouvez utiliser des outils de plateforme comme Docker ou rkt pour gérer directement les conteneurs, mais la plupart des déploiements utilisent un outil d'orchestration comme Kubernetes pour la gestion des conteneurs. Bien que cela ne soit pas obligatoire, Kubernetes devient l’outil standard pour les déploiements de conteneurs de niveau production.
Les conteneurs sont devenus un choix architectural très populaire car ils permettent de diviser une application en composants plus petits et discrets, permettant ainsi une division entre les propriétaires d'infrastructure et les développeurs. Cela est bénéfique pendant le développement car cela signifie que des équipes distinctes peuvent travailler sur les différents composants en parallèle, et pendant le déploiement car cela permet la transportabilité d'un conteneur donné entre les plates-formes. Les conteneurs fournissent également un outil plus rationalisé pour les gestionnaires application et d'infrastructures, car ils peuvent fournir des plates-formes immuables qui permettent aux développeurs de publier des conteneurs application selon un ensemble d'exigences connues sans posséder ces exigences.
Le terme conteneurisation application est souvent utilisé pour désigner le processus de migration d’une application d’un environnement d’exécution Linux standard vers un format autonome pouvant s’exécuter dans de nombreux environnements. De nombreuses entreprises sont bien avancées dans leur parcours de conteneurisation et ont déjà commencé la migration vers des conteneurs de base ou une stratégie de gestion de conteneurs plus complète à l'aide d'un outil comme Kubernetes.
Tous les produits NGINX peuvent soit fonctionner dans des conteneurs – y compris NGINX Open Source , NGINX Plus (en option avec NGINX App Protect ), NGINX Unit , NGINX Service Mesh , NGINX Ingress Controller – soit être basés sur des technologies de conteneurs ( NGINX Controller ).