Cet article fait partie de notre guide: Conteneurs et automatisation : la voie royale vers DevOps

Pourquoi gérer ses conteneurs Linux avec systemd

Pourquoi compliquer la gestion des conteneurs avec une nouvelle plateforme, alors que systemd vous permet déjà de les déployer et administrer

Systemd est désormais le gestionnaire de service par défaut de presque toutes les distributions Linux, ce qui en fait un choix logique pour le déploiement de conteneurs Linux. Cette technologie offre un moyen standard pour contrôler les programmes et les services et permet de gérer l’allocation de ressources et le montage de systèmes de fichiers.

En fait, nombre de personnes pensent que systemd est devenu trop diversifié, et cela est en partie vrai. Les applications transverses, répondant à plusieurs besoins, sont en quelques points contraires à la philosophie globale de Linux qui consiste à faire une chose, mais à le faire bien. Toutefois, comme il s’agit d’un outil utilisé par de nombreux administrateurs, et il convient de le considérer pour déployer et gérer aussi des conteneurs Linux.

Mais qu’est-ce qu’un conteneur Linux ?

Un conteneur est un service Linux qui fonctionne dans un environnement isolé au-dessus du noyau Linux. Les services isolés dans un conteneur ne sont pas accessibles par d’autres conteneurs grâce à des fonctions sophistiquées de sécurité, comme les namespaces et chroot.

Les conteneurs Linux sont bien en place depuis un certain temps, avec Virtuozzo et LXC, par exemple. Toutefois avec l’arrivée récente de Docker, les conteneurs Linux ont suscité un grand intérêt et certains éditeurs, et distributions, mettent désormais l’accent sur leur gestion. Avec autant de projets spécialisés, la question est désormais de savoir si systemd constitue un outil adéquat pour déployer et gérer des conteneurs.

Comment les conteneurs Linux fonctionnent avec systemd

Creusons un peu plus. Comme expliqué auparavant, un conteneur est un service qui fonctionne dans un environnement isolé avec des ressources dédiées, au-dessus du noyau Linux. Ces conteneurs sont portables, et peuvent donc s’exécuter sur toutes les distributions Linux. Systemd est un gestionnaire de services qui active ces services et peut gérer les composants, comme cgroups et chroot, sur lesquels repose l’isolation des conteneurs.

Dans systemd, nspawn est le composant qui peut être utilisé pour démarrer les conteneurs. Il s’agit d’une méthode relativement nouvelle arrivée avec la version de systemd publié dans Red Hat Enterprise Linux 7.1

Pour créer un conteneur nspawn, le [email protected] doit être activé. Pour cela, vous devez entrer les lignes de commandes suivantes :

yum -y --releasever=7Server --installroot=/var/lib/container/minirhel7 install systemd passwd yum redhat-release-minimal

Ensuite, nspawn doit être dirigé vers un répertoire spécifique, avec la commande :

systemd-nspawn -D /var/lib/container/minirhel7

Cela pose le socle de base et crée un environnement de conteneurs à partir duquel vous pouvez exécuter des commandes, comme « passwd » pour mettre en place le mot de passe root.

Mais la question est aussi de savoir si gérer des conteneurs Linux avec systemd est utile et pertinent alors qu’il existe de nombreux autres services sur le marché. Je pense qu’il existe bien une place. Selon moi, je ne pense pas que la méthode idéale soit arrivée. Docker a suscité beaucoup d’intérêt, mais il manque  encore des options pour l’intégrer correctement à un environnement OpenStack. Ubuntu a aussi présenté son alternative, LXD, mais cela ne semble pas être encore la bonne solution.

Dans un contexte où le parfait conteneur Linux n’existe pas, il fait sens de donner sa chance à systemd. Après tout, systemd prend déjà en charge tous les composants nécessaires à la création de conteneurs. Alors pourquoi ne pas les unir pour proposer une solution alternative ?

Traduit et adapté par la rédaction

 

 

Pour approfondir sur Stockage de conteneurs