Aller au contenu principal

Construire et Orchestrer des conteneurs

info

Cette documentation est en cours d'écriture, donc soyez indulgent pour le moment. Je compte ajouter du contenu régulièrement pour le rendre de qualité.

Définition

Un conteneur Linux® est un processus ou un ensemble de processus isolés du reste du système. Tous les fichiers nécessaires à leur exécution sont fournis par une image distincte, ce qui signifie que les conteneurs Linux sont portables et fonctionnent de la même manière quelle que soit la famille de système d'exploitation.

conteneur docker

Le conteneur apporte une virtualisation de l'environnement d'exécution (processeur, mémoire vive, réseau, système de fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de « machine virtuelle ».

concept docker

Le premier avantage qu'ils apportent, c'est qu'ils sont bien plus rapides à instancier que des serveurs virtualisés puisque la machine les hébergeant est déjà démarrée.

De telles instances peuvent ressembler à de vrais serveurs du point de vue des programmes qui y sont exécutés. Les programmes exécutés à l'intérieur d'un conteneur ne peuvent voir que le contenu du conteneur et n'ont accès qu'aux ressources qui lui sont autorisées via les espaces de noms et les cgroups.

La conteneurisation consiste donc à rassembler le code du logiciel et tous ses composants (bibliothèques, frameworks et autres dépendances) de manière à les isoler dans leur propre « conteneur ».

L'application dans le conteneur peut être déplacée et exécutée de façon cohérente dans n'importe quelle infrastructure, indépendamment des dérivés d'un système d'exploitation. Par exemple, une application Linux, pourra être déployée sur un autre serveur Linux, même si ce n'est le même que celui du conteneur !

Construire des images de conteneurs

La conteneurisation consiste donc à rassembler le code du logiciel et tous ses composants (bibliothèques, frameworks et autres dépendances) de manière à les isoler dans leur propre « conteneur ». Comme pour les VM, il est nécessaire de construire des images d'OS.

Une image de conteneur est décrite dans un fichier teste qu'on appelle un Dockerfile. C'est un simple fichier texte qui définit une séquence de commandes UNIX. Ces commandes vont s’exécuter les unes après les autres permettant d’installer d’une application.

Vous trouverez plus de détails dans le chapitre dédié à la construction des images de conteneurs.

Exécuter un ou plusieurs conteneurs

Maintenant que nous savons comment construire une image de conteneurs, nous sommes prêts pour lancer leur exécution sur une machine hôte où un moteur de conteneurs y est installé et en cours d'exécution.

Pour des cas simples où nous souhaitons juste faire tourner un ou plusieurs services non dépendants, nous n'aurons recours qu'à un simple moteur de conteneurs.

Pour des cas plus complexes, nous aurons besoin de recourir à un orchestrateur de containers.