Il y a quelque temps, autour de la sortie de la version 3 du noyau Linux, le concept d'espaces de noms et de conteneurisation a été introduit via un module appelé lxc (conteneurs Linux).
L'idée derrière un conteneur est en quelque sorte similaire à l'idée d'une machine virtuelle. Par exemple, avec la virtualisation, vous avez un serveur (l'« hôte ») exécutant quelque chose comme KVM ou VMware. Les machines qui s'y exécutent sont appelées invités. Ce sont des ordinateurs entièrement autonomes, fonctionnant au-dessus de l'hôte.
Les conteneurs font passer ce concept au niveau supérieur. Les conteneurs aident en particulier les développeurs (mais aussi les administrateurs système) à déployer rapidement des applications ou des services. Les conteneurs sont de très petites machines Linux qui s'exécutent comme un processus Linux normal (dans l'espace utilisateur ). Un serveur Linux moyen a une taille de gigaoctets et possède un noyau rempli de pilotes pratiques pour toutes sortes de matériel, etc. Un conteneur, à l'inverse, ne fait que quelques centaines de mégaoctets. Une machine virtuelle démarrera en quelques minutes, un conteneur démarrera, y compris son application prévue, en quelques secondes ou moins. Il s'exécute comme vous vous attendez à ce que n'importe quelle application Linux normale s'exécute - en tant que processus que vous pouvez voir à l'aide de la commande ps.
Le diagramme ci-dessous des gens de CoreOS montre bien la relation entre les conteneurs et le système d'exploitation. En haut, vous pouvez voir un serveur Linux normal, exécutant tous les services habituels que vous pourriez imaginer, tels que Java, le serveur Web nginx, etc., il y aura probablement aussi quelques autres applications en cours d'exécution.
Dans la figure 2, vous pouvez voir un exemple de système d'exploitation orienté vers la conteneurisation. Il n'a que des applications limitées et minimales, telles que le serveur ssh en cours d'exécution. Toutes les autres applications s'exécutent désormais dans des conteneurs complètement isolés.
Êtres éphémères
Les conteneurs sont idéalement conçus pour être à usage unique :imaginez que vous avez une application qui utilise JBoss et PostgreSQL. Vous auriez probablement un conteneur pour les composants JBoss et PostgreSQL. Les deux conteneurs sont isolés l'un de l'autre, mais il est possible qu'ils soient reliés, afin qu'ils puissent se parler. Les conteneurs sont également conçus pour être éphémères :une fois qu'il a servi, vous le faites exploser, vous pouvez toujours en faire tourner un autre en quelques secondes. Cela signifie également que les données stockées dans un conteneur ne sont pas persistant. Si vous souhaitez conserver des données, telles que des bases de données ou des sites Web, vous pouvez les placer dans un volume de stockage exporté sur le serveur hôte. Dans les meilleures pratiques de sécurité, vous devez mettre à jour votre image de base avec tous les nouveaux correctifs ou procédures de renforcement de la sécurité, puis lancer votre application. Après cela, vous détruiriez votre conteneur de la semaine dernière et utiliseriez le nouveau conteneur plus sécurisé la semaine suivante.
Les conteneurs s'intègrent parfaitement à l'ensemble du SaaS (modèle de logiciel en tant que service), et permettent également aux développeurs et au personnel d'exploitation de travailler ensemble de manière plus conviviale (lire DevOps way). Mais n'allons pas trop loin ici, l'outillage ne va pas régler les problèmes culturels, c'est un tout autre sujet pour un autre site !
Docker
Docker existe depuis un moment maintenant. Docker a apporté à Linux ce que lxc ne pouvait pas :la facilité d'utilisation. Une fois que les développeurs ont découvert à quel point il était simple de faire tourner un conteneur Docker sur leur ordinateur portable et d'avoir la garantie qu'il fonctionnerait exactement de la même manière sur un serveur ailleurs, avec la plus grande facilité, cela est rapidement devenu une évidence. /P>
Docker a ses détracteurs, certains (comme l'équipe coreOS) pensent que Docker n'est pas assez sécurisé, et ils deviennent trop commercialisés (c'est pourquoi ils ont fait de rkt un concurrent de Docker), mais qu'ils aiment ou détestent, Docker a un un nombre considérable d'abonnés, et pas seulement dans les entreprises auxquelles vous vous attendez, comme Amazon et Google.
Plus de lecture
Vous pouvez en savoir plus sur la conteneurisation sur les sites Web suivants :
LinuxContainers.org
Docker :Qu'est-ce que Docker ?
Amazon AWS :qu'est-ce que ? Conteneurs ?
Rkt (prononcé Rocket), de CoreOS