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, les conteneurs facilitent le déploiement d’une application sur une série de plateformes différentes. Un conteneur rassemble toutes les exigences de l’application (le code de l’application lui-même, les dépendances telles que les bibliothèques dont l’application a besoin pour fonctionner et l’environnement d’exécution de l’application et de ses dépendances) dans un facteur de forme qui peut être transporté et exécuté indépendamment à travers les 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 de mise en œuvre 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 telles que cgroups et namespaces (toutes deux utilisées pour l’isolation des applications de manière similaire aux moteurs de conteneur, mais n’offrant pas de portabilité isolée comme les conteneurs). Vous pouvez utiliser des outils de plateforme tels que Docker ou rkt pour gérer les conteneurs directement, mais la plupart des déploiements utilisent un outil d’orchestration tel que Kubernetes pour la gestion des conteneurs. Bien qu’il ne soit pas obligatoire, Kubernetes est en train de devenir l’outil standard pour les déploiements de conteneurs de niveau production.
Les conteneurs sont devenus un choix architectural très populaire parce qu’ils permettent de diviser une application en composants plus petits et discrets. Cela permet une division entre les propriétaires de l’infrastructure et les développeurs. Ceci est bénéfique pendant le développement parce que cela signifie que des équipes séparées peuvent travailler sur les différents composants en parallèle, et pendant le déploiement parce que cela permet la transportabilité d’un conteneur donné entre les plateformes. Les conteneurs fournissent également un outil plus rationalisé pour les gestionnaires d’applications et d’infrastructures parce qu’ils peuvent fournir des plateformes immuables qui permettent aux développeurs de publier des conteneurs d’applications pour un ensemble d’exigences connues sans posséder ces exigences.
Le terme de conteneurisation des applications est souvent utilisé pour signifier le processus de migration d’une application d’un environnement d’exécution Linux standard vers un facteur de forme autonome qui peut fonctionner 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 vers une stratégie de gestion des conteneurs plus complète à l’aide d’un outil tel que Kubernetes.
Tous les produits NGINX peuvent 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. Ils sont également intégrés dans des technologies de conteneurs(NGINX Controller).