Introduction à nerdctl pour containerd
Mise à jour :
Après avoir découvert les bases de containerd, vous vous demandez peut-être comment simplifier son utilisation. Par défaut, containerd est livré avec ctr, un outil minimaliste mais parfois limité pour interagir avec les conteneurs. C’est là que nerdctl entre en jeu.
nerdctl propose une interface en ligne de commande qui remplace avantageusement ctr, tout en offrant une expérience proche de celle de Docker. Avec nerdctl, vous bénéficiez de fonctionnalités équivalentes, voire supérieures à celles de Docker, sans dépendre de son écosystème.
Fonctionnalités principales de nerdctl
nerdctl offre une large gamme de fonctionnalités, tout en conservant une interface simple et familière pour les utilisateurs habitués à Docker. Voici un aperçu des principales capacités de l’outil :
- Léger et modulaire
- Conçu pour des environnements modernes et minimaux, tout en restant extensible grâce à ses fonctionnalités optionnelles.
- Compatibilité avec Docker
- Interface et commandes similaires à Docker (
nerdctl run
,nerdctl build
, etc.). - Support natif de Docker Compose via la commande
nerdctl compose up
.
- Interface et commandes similaires à Docker (
- Mode rootless (facultatif)
- Exécutez des conteneurs en mode sans privilèges.
- Réduction de la surcharge réseau grâce à l’utilisation de bypass4netns.
- Lazy-pulling des images (facultatif)
- Prise en charge de technologies comme Stargz, Nydus et OverlayBD pour accélérer le téléchargement des images.
- Images chiffrées (facultatif)
- Sécurisez vos images avec le chiffrement grâce à ocicrypt.
- Distribution d’images P2P (facultatif)
- Partagez des images via IPFS (InterPlanetary File System) pour une distribution décentralisée.
- Signature et vérification des images (facultatif)
- Garantissez l’intégrité des images avec Cosign.
- Intégration avec containerd
- S’appuie directement sur containerd, réduisant la dépendance aux outils tiers.
nerdctl est un projet satellite de containerd, offrant une alternative légère et performante à Docker pour la gestion des conteneurs.
Installation de nerdctl
-
Téléchargez le binaire nerdctl :
Terminal window VERSION=$(curl -s https://api.github.com/repos/containerd/nerdctl/releases/latest | grep tag_name | cut -d '"' -f 4| sed 's/^v//')wget https://github.com/containerd/nerdctl/releases/download/v${VERSION}/nerdctl-${VERSION}-linux-amd64.tar.gz -
Décompresser l’archive et installez le binaire :
Terminal window sudo tar -xvf nerdctl-${VERSION}-linux-amd64.tar.gz -C /usr/local/binsudo chmod +x /usr/local/bin/nerdctl -
Vérifiez l’installation de nerdctl :
Terminal window nerdctl --version
Vous êtes maintenant prêt à gérer vos conteneurs avec nerdctl ! Si vous avez suivi toutes les étapes, Docker est complètement désinstallé, et votre système utilise désormais containerd comme runtime et nerdctl comme CLI.
Commandes de base avec nerdctl
nerdctl reprend une interface similaire à Docker, ce qui facilite la transition. Voici les commandes essentielles pour démarrer rapidement avec cet outil.
- Lancer un conteneur :
Pour exécuter un conteneur basé sur une image, utilisez la commande run
:
nerdctl run -p 80:8080 -d --name mon-conteneur nginx
- Lister les conteneurs :
Pour voir les conteneurs actifs :
nerdctl ps
Ajoutez -a
pour inclure les conteneurs arrêtés :
nerdctl ps -a
- Stopper un conteneur
Arrêtez un conteneur en spécifiant son nom ou son ID :
nerdctl stop mon-conteneur
- Supprimer un conteneur
Pour supprimer un conteneur arrêté :
nerdctl rm mon-conteneur
Pour forcer la suppression d’un conteneur en cours d’exécution :
nerdctl rm -f mon-conteneur
- Télécharger une image
Pour récupérer une image depuis un registre :
nerdctl pull alpine
Vous pouvez également spécifier une version :
nerdctl pull nginx:1.23
- Lister les images locales
Affichez toutes les images disponibles sur votre machine :
nerdctl images
- Construire une image
Pour créer une image à partir d’un Dockerfile :
nerdctl build -t mon-image:1.0 .
- Inspecter un conteneur ou une image
Affichez des informations détaillées sur un conteneur :
nerdctl inspect mon-conteneur
Ou sur une image :
nerdctl inspect alpine
- Afficher les logs
Pour consulter les journaux d’un conteneur :
nerdctl logs mon-conteneur
- Lancer un terminal interactif
Pour ouvrir un shell dans un conteneur en cours d’exécution :
nerdctl exec -it mon-conteneur sh
Gestion des réseaux et des volumes avec nerdctl
Avec nerdctl, vous pouvez configurer des réseaux personnalisés et gérer des volumes pour vos conteneurs, tout comme avec Docker. Voici un guide pour manipuler ces fonctionnalités essentielles.
- Créer un réseau personnalisé
Pour créer un réseau avec nerdctl, utilisez la commande suivante :
nerdctl network create mon-reseau
Par défaut, cela configure un réseau en mode bridge.
Vérifiez la liste des réseaux disponibles :
nerdctl network ls
- Connecter un conteneur à un réseau
Lors du lancement d’un conteneur, vous pouvez spécifier le réseau :
nerdctl run --rm --name conteneur-test --network mon-reseau -d nginx
- Inspecter un réseau
Pour afficher les détails d’un réseau :
nerdctl network inspect mon-reseau
- Supprimer un réseau
Pour supprimer un réseau inutilisé :
nerdctl network rm mon-reseau
- Créer et gérer des volumes
Les volumes permettent de stocker des données persistantes pour vos conteneurs.
Créer un volume :
nerdctl volume create mon-volume
Lister les volumes :
nerdctl volume ls
- Monter un volume dans un conteneur
Pour monter un volume dans un conteneur :
nerdctl run --rm -d --name conteneur-vol -v mon-volume:/data nginx
- Inspecter un volume
Pour afficher les détails d’un volume :
nerdctl volume inspect mon-volume
- Supprimer un volume
Pour supprimer un volume inutilisé :
nerdctl volume rm mon-volume
Utilisation de Docker Compose avec nerdctl
nerdctl prend en charge Docker Compose via la commande nerdctl compose
. Cela permet de gérer des applications multi-conteneurs définies dans
un fichier docker-compose.yml
, tout en restant dans l’écosystème
containerd. Voici comment utiliser cette fonctionnalité.
- Vérifier la compatibilité
nerdctl compose est compatible avec les fichiers docker-compose.yml
standard. Avant de commencer, assurez-vous que votre fichier suit la syntaxe
de Docker Compose.
Exemple simple de fichier docker-compose.yml
:
services: web: image: nginx ports: - "8080:80"
- Démarrer une application Compose
Pour démarrer une application définie dans un fichier docker-compose.yml
:
nerdctl compose up -d
- Arrêter les services Compose
Pour arrêter tous les services d’une application Compose :
nerdctl compose down
Cette commande supprime également les conteneurs associés mais conserve les volumes.
- Recréer ou mettre à jour les services
Pour recréer ou mettre à jour des services après une modification du fichier :
nerdctl compose up --build
- Lister les projets en cours d’exécution
Pour voir les applications Compose actives :
nerdctl compose ps
- Inspecter les journaux d’un service
Pour suivre les journaux d’un service spécifique :
nerdctl compose logs web
Ajoutez -f
pour suivre les journaux en temps réel :
nerdctl compose logs -f web
- Exécuter une commande dans un conteneur d’un service
Pour interagir avec un conteneur d’un service défini dans le fichier Compose :
nerdctl compose exec web sh
- Supprimer les volumes avec les services
Pour supprimer les volumes persistants lors de l’arrêt des services :
nerdctl compose down -v
Conclusion
nerdctl se positionne comme une alternative robuste et moderne à Docker, parfaitement adaptée aux environnements intégrant containerd. En maîtrisant ses commandes de base, sa gestion des réseaux, des volumes et ses capacités Compose, vous avez désormais les outils pour gérer efficacement vos conteneurs.
Mais ce n’est que le début ! Les fonctionnalités avancées de nerdctl ouvrent la porte à des optimisations et des pratiques de sécurité encore plus puissantes. Dans un prochain guide, je détaillerai ces aspects :
- Lazy pulling pour accélérer les déploiements,
- Chiffrement des images avec ocicrypt pour protéger vos données,
- Signature et vérification d’images avec Cosign pour garantir leur intégrité,
- Et bien d’autres, comme la distribution d’images via IPFS