Containerd
Mise à jour :
Containerd est un moteur de conteneurs léger, rapide et robuste, idéal pour gérer vos workloads en conteneurs. Initialement intégré à Docker, il est aujourd’hui un projet clé soutenu par la CNCF et parfaitement adapté à Kubernetes. Ce guide vous permettra d’apprendre à l’installer, le configurer et l’utiliser efficacement.
Un peu d’histoire
Containerd a vu le jour en 2015 comme un composant central de Docker, conçu pour gérer l’exécution et la supervision des conteneurs. À l’époque, Docker combinait plusieurs fonctionnalités : le build d’images, la gestion des conteneurs, et l’orchestration. Pour simplifier son architecture, Docker a choisi de découpler certaines de ces responsabilités, donnant naissance à containerd en tant que moteur dédié à la gestion des conteneurs.
En 2017, Docker a fait un pas décisif en transférant containerd à la Cloud Native Computing Foundation (CNCF). Cette décision a renforcé l’indépendance et l’adoption de containerd, le plaçant au centre de l’écosystème cloud-native. Depuis, il est devenu le runtime privilégié pour des outils comme Kubernetes, remplaçant l’ancien Docker-shim avec le support natif de l’interface CRI (Container Runtime Interface).
Aujourd’hui, containerd est utilisé par les principaux fournisseurs de services cloud et s’impose comme une référence incontournable dans la gestion des conteneurs grâce à sa stabilité et ses performances éprouvées. Une belle trajectoire pour un projet né dans l’ombre de Docker !
Quelles différences entre Docker et containerd ?
Bien que Docker et containerd soient souvent associés, leurs objectifs et fonctionnalités diffèrent sensiblement. Docker est une plateforme complète de gestion de conteneurs, regroupant des outils pour la création d’images, leur gestion, et leur orchestration. À l’inverse, containerd se concentre uniquement sur l’exécution des conteneurs, en servant de moteur minimaliste et performant.
Docker repose en grande partie sur containerd pour ses tâches d’exécution des conteneurs. Cependant, il y ajoute des fonctionnalités comme le build d’images avec Dockerfile, la gestion avancée des réseaux, et des outils comme Docker Compose pour orchestrer des applications multi-conteneurs. Docker vise à fournir une solution tout-en-un, accessible aux développeurs et facile à prendre en main.
De son côté, containerd est conçu pour être léger et modulaire, privilégiant l’intégration dans des environnements cloud-native comme Kubernetes. Son adoption massive s’explique notamment par son support natif de l’interface CRI (Container Runtime Interface), simplifiant son utilisation dans des clusters Kubernetes, où Docker est désormais déprécié.
Un autre point de divergence est l’interface utilisateur. Docker offre une CLI
riche et conviviale, tandis que containerd propose des outils minimalistes comme
ctr
ou nerdctl, principalement destinés aux administrateurs et
développeurs expérimentés.
En résumé, Docker est idéal pour démarrer avec les conteneurs ou pour des workflows complets, tandis que containerd s’adresse aux utilisateurs cherchant un runtime performant, modulaire, et parfaitement adapté à l’écosystème cloud-native.
Fonctionnalités principales de containerd
Voici les fonctionnalités clés qui font de containerd un outil puissant pour la gestion des conteneurs :
- Support des spécifications OCI Compatible avec les images et runtime conformes aux normes OCI (Open Container Initiative), garantissant une interopérabilité maximale.
- Gestion des images conteneurs Permet le téléchargement, la gestion et
l’exécution d’images via des outils comme
ctr
,crictl
ounerdctl
. - Interface CRI intégrée Fournit un support natif pour Kubernetes, simplifiant l’intégration comme runtime des nœuds.
- Snapshots efficaces Gère les systèmes de fichiers avec des snapshots performants pour des performances optimales et une meilleure isolation des conteneurs.
- Modularité Un design minimaliste et modulaire, permettant une intégration facile avec des outils tiers.
- Support multi-plateforme Fonctionne sur les architectures Linux (amd64, arm64) et Windows.
- Extensibilité Possède une API gRPC permettant aux développeurs de créer des outils personnalisés pour interagir avec le moteur.
- Léger et performant Conçu pour exécuter des workloads conteneurs avec un faible overhead.
Installation de containerd
L’installation de containerd dépend de vos besoins. Si vous cherchez à simplement exécuter des conteneurs localement, vous pouvez installer containerd seul. Cependant, pour un environnement de développement plus complet avec des outils comme le build d’images, l’ajout de Docker peut être pertinent, car il inclut containerd comme composant interne.
Installation manuelle de containerd
-
Télécharger les binaires : Rendez-vous sur la page des releases ↗ et téléchargez l’archive correspondant à votre architecture (amd64, arm64).
-
Extraire les fichiers : Une fois l’archive téléchargée, extrayez-la dans
/usr/local
. -
Configurer le démarrage avec systemd (facultatif) : Téléchargez le fichier
containerd.service
depuis le dépôt officiel et placez-le dans/usr/local/lib/systemd/system/
.
Containerd nécessite également :
-
runc : Runtime pour exécuter les conteneurs. Téléchargez-le depuis runc releases ↗ et installez-le :
-
CNI plugins : Pour configurer le réseau des conteneurs. Téléchargez l’archive et extrayez-la dans
/opt/cni/bin
.
Installation avec un gestionnaire de paquets
Sur les distributions basées sur Debian/Ubuntu :
-
Ajoutez le dépôt officiel Docker :
-
Installez containerd.io :
Sur les distributions basées sur CentOS/Fedora/RHEL :
-
Ajoutez le dépôt officiel Docker :
-
Installez containerd.io :
-
Démarrez et activez le service :
Configuration de containerd
La configuration de containerd est définie dans un fichier config.toml
.
Par défaut, ce fichier est situé dans /etc/containerd/config.toml
. Cette
configuration contrôle divers aspects, comme le chemin des sockets, les plugins
activés ou désactivés, et les options réseau.
Voici une explication détaillée d’une configuration typique installé avec docker :
- Ce paramètre désactive le plugin CRI (Container Runtime Interface) utilisé pour intégrer containerd avec Kubernetes.
Personnalisation et activation
-
Générer un fichier de configuration par défaut : Si le fichier
config.toml
n’existe pas, générez-le : -
Modifier le fichier : Éditez le fichier avec votre éditeur préféré :
-
Redémarrer le service :
Après toute modification, redémarrez containerd pour appliquer les changements :
En ajustant cette configuration selon vos besoins, vous pouvez optimiser containerd pour votre environnement, qu’il s’agisse d’une utilisation en standalone ou intégré dans un cluster Kubernetes. 😊
Utilisation de la CLI ctr
La commande ctr
est l’outil CLI natif fourni avec containerd. Bien
qu’il soit principalement conçu pour le débogage et les tests, ctr
offre un
accès direct et granulaire à toutes les fonctionnalités de containerd. Ce
n’est pas l’outil recommandé pour une utilisation en production, mais il reste
essentiel pour les administrateurs systèmes et les développeurs souhaitant
explorer ou interagir directement avec containerd.
- Lister les namespaces disponibles : Vérifiez quels namespaces existent sur votre instance de containerd :
Si vous voyez moby
, cela signifie que Docker utilise ce namespace pour ses
conteneurs.
- Lister les conteneurs actifs : Dans le namespace
default
, affichez les conteneurs actuellement en cours d’exécution :
Dans un autre namespace (par exemple, moby
) :
- Télécharger une image : Pour récupérer une image depuis un registre Docker :
- Lister les images disponibles :
Affichez les images déjà téléchargées :
- Lancer un conteneur interactif : Pour exécuter un conteneur à partir d’une image :
Explications :
--rm
: supprime le conteneur après l’exécution.-t
: lance un terminal interactif.my-redis
: nom du conteneur.
- Supprimer une image : Pour supprimer une image inutilisée :
-
Inspecter un conteneur : Pour obtenir les métadonnées d’un conteneur :
Conclusion
Containerd est un moteur léger et performant, essentiel dans l’écosystème des conteneurs. Que ce soit en standalone ou intégré à Docker et Kubernetes, il s’adapte à vos besoins grâce à sa modularité et ses fonctionnalités avancées.
Simple à configurer et puissant à utiliser, il constitue un atout majeur pour gérer vos workloads conteneurs avec fiabilité. Avec containerd, vous êtes prêt à optimiser vos environnements modernes en toute simplicité. 🚀