Explorer les technologies de conteneurs : au-delà de Docker
Lorsque vous parlez de technologies de conteneurs, le nom Docker revient rapidement. Docker a joué un rôle majeur dans le développement des conteneurs, mais d’autres technologies existent désormais. Nous vous proposons un aperçu des alternatives disponibles sur le marché. Elles pourraient peut-être apporter une valeur ajoutée à votre projet.
Les conteneurs sont souvent confondus avec la virtualisation, mais il existe une différence fondamentale. Un conteneur n’est pas une machine virtuelle. Voyez-le plutôt comme un processus auquel on fait croire qu’il se trouve dans un environnement fictif optimal. Nous vous présentons les différents types.
On distingue deux types de technologies de conteneurs : les conteneurs applicatifs et les conteneurs système.
Les conteneurs applicatifs « conteneurisent » un seul processus ou une seule application, avec les dépendances logicielles et les fichiers de configuration nécessaires. Ces conteneurs sont toujours stateless par nature. Cela signifie qu’au redémarrage du conteneur, aucune donnée ne reste stockée dans celui-ci. Pour stocker des données dans des conteneurs applicatifs, il faut définir explicitement, lors de la configuration du conteneur, que ses données doivent être enregistrées sur un stockage persistant.
Les conteneurs système, quant à eux, simulent un système d’exploitation complet. Ce type de conteneur peut ainsi conteneuriser plusieurs processus et applications au sein d’un seul et même conteneur. Les conteneurs système sont donc plutôt utilisés comme des machines virtuelles. Ils restent toutefois des conteneurs, car ils utilisent le kernel du système d’exploitation sur lequel ils s’exécutent. Ils n’ont donc pas leur propre kernel, contrairement aux machines virtuelles. Les conteneurs système sont stateful. Cela signifie que les données générées par le conteneur y restent stockées et ne sont donc pas perdues lors d’un redémarrage.
Conteneurs applicatifs
La technologie de conteneurs la plus connue est bien sûr Docker. Docker appartient à la catégorie des conteneurs applicatifs. Mieux encore : Docker a posé les bases de l’utilisation des conteneurs applicatifs, ce qui explique pourquoi son nom est si familier à la plupart des développeurs d’applications.
Vous créez des conteneurs Docker à l’aide d’un fichier Dockerfile. Dans ce fichier, vous définissez les étapes de configuration suivantes :
- les dépendances
- l’application
- les fichiers nécessaires
Les fichiers Dockerfile peuvent être facilement partagés avec d’autres personnes. Vous pouvez être certain que l’environnement créé avec votre Dockerfile fonctionnera également ailleurs. C’est évidemment très puissant et cela met en évidence la valeur ajoutée potentielle des technologies de conteneurs.
Au fil des ans, des solutions de remplacement directes de Docker ont également fait leur apparition. Elles visent surtout à corriger ses lacunes. Docker a été le premier et est très robuste, mais la technologie évolue rapidement et plusieurs alternatives intéressantes sont vite apparues.
Podman est une solution de remplacement direct bien connue. Podman ne s’exécute pas comme un seul daemon. Explication : si le service Docker plante, tous les conteneurs Docker plantent. Ce n’est pas le cas avec Podman. Autre avantage : les conteneurs Podman peuvent aussi être lancés par des utilisateurs non-root. C’est un atout majeur en matière de sécurité.
Conteneurs système
Pour les conteneurs système, on se tourne surtout vers les conteneurs LXC. Comme indiqué, ils simulent une machine virtuelle complète. Ils utilisent également le kernel de l’hôte et n’ont donc pas leur propre kernel. Il existe un modèle de conteneur LXC pour chaque distribution Linux connue. Vous pouvez ainsi utiliser votre gestionnaire de paquets préféré (yum, apt, pacman,...) dans un conteneur LXC. Comme ils sont stateful et se comportent comme des machines virtuelles, il est préférable d’utiliser un gestionnaire de configuration (Ansible, Puppet,..) pour automatiser leur gestion. LXC n’a pas d’équivalent au fichier Dockerfile.
Quel type de conteneur choisir ?
Ce choix vous appartient entièrement et dépend du style d’administration système qui vous convient le mieux. Si vous avez beaucoup d’expérience avec les machines virtuelles et Ansible, vous pourrez plus facilement exploiter tout le potentiel des conteneurs LXC.
Vous préférez créer une application à partir d’un fichier de configuration qui automatise facilement toutes les étapes ? Vous pouvez en outre facilement partager ce fichier et utiliser Git pour le contrôle de version. Dans ce cas, un conteneur applicatif est fait pour vous.