Aller au contenu

Introduction à nerdctl pour containerd

Mise à jour :

Logo nerdctl

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.
  • 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

  1. 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
  2. Décompresser l’archive et installez le binaire :

    Terminal window
    sudo tar -xvf nerdctl-${VERSION}-linux-amd64.tar.gz -C /usr/local/bin
    sudo chmod +x /usr/local/bin/nerdctl
  3. 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.

  1. Lancer un conteneur :

Pour exécuter un conteneur basé sur une image, utilisez la commande run :

Terminal window
nerdctl run -p 80:8080 -d --name mon-conteneur nginx
  1. Lister les conteneurs :

Pour voir les conteneurs actifs :

Terminal window
nerdctl ps

Ajoutez -a pour inclure les conteneurs arrêtés :

Terminal window
nerdctl ps -a
  1. Stopper un conteneur

Arrêtez un conteneur en spécifiant son nom ou son ID :

Terminal window
nerdctl stop mon-conteneur
  1. Supprimer un conteneur

Pour supprimer un conteneur arrêté :

Terminal window
nerdctl rm mon-conteneur

Pour forcer la suppression d’un conteneur en cours d’exécution :

Terminal window
nerdctl rm -f mon-conteneur
  1. Télécharger une image

Pour récupérer une image depuis un registre :

Terminal window
nerdctl pull alpine

Vous pouvez également spécifier une version :

Terminal window
nerdctl pull nginx:1.23
  1. Lister les images locales

Affichez toutes les images disponibles sur votre machine :

Terminal window
nerdctl images
  1. Construire une image

Pour créer une image à partir d’un Dockerfile :

Terminal window
nerdctl build -t mon-image:1.0 .
  1. Inspecter un conteneur ou une image

Affichez des informations détaillées sur un conteneur :

Terminal window
nerdctl inspect mon-conteneur

Ou sur une image :

Terminal window
nerdctl inspect alpine
  1. Afficher les logs

Pour consulter les journaux d’un conteneur :

Terminal window
nerdctl logs mon-conteneur
  1. Lancer un terminal interactif

Pour ouvrir un shell dans un conteneur en cours d’exécution :

Terminal window
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.

  1. Créer un réseau personnalisé

Pour créer un réseau avec nerdctl, utilisez la commande suivante :

Terminal window
nerdctl network create mon-reseau

Par défaut, cela configure un réseau en mode bridge.

Vérifiez la liste des réseaux disponibles :

Terminal window
nerdctl network ls
  1. Connecter un conteneur à un réseau

Lors du lancement d’un conteneur, vous pouvez spécifier le réseau :

Terminal window
nerdctl run --rm --name conteneur-test --network mon-reseau -d nginx
  1. Inspecter un réseau

Pour afficher les détails d’un réseau :

Terminal window
nerdctl network inspect mon-reseau
  1. Supprimer un réseau

Pour supprimer un réseau inutilisé :

Terminal window
nerdctl network rm mon-reseau
  1. Créer et gérer des volumes

Les volumes permettent de stocker des données persistantes pour vos conteneurs.

Créer un volume :

Terminal window
nerdctl volume create mon-volume

Lister les volumes :

Terminal window
nerdctl volume ls
  1. Monter un volume dans un conteneur

Pour monter un volume dans un conteneur :

Terminal window
nerdctl run --rm -d --name conteneur-vol -v mon-volume:/data nginx
  1. Inspecter un volume

Pour afficher les détails d’un volume :

Terminal window
nerdctl volume inspect mon-volume
  1. Supprimer un volume

Pour supprimer un volume inutilisé :

Terminal window
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é.

  1. 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"
  1. Démarrer une application Compose

Pour démarrer une application définie dans un fichier docker-compose.yml :

Terminal window
nerdctl compose up -d
  1. Arrêter les services Compose

Pour arrêter tous les services d’une application Compose :

Terminal window
nerdctl compose down

Cette commande supprime également les conteneurs associés mais conserve les volumes.

  1. Recréer ou mettre à jour les services

Pour recréer ou mettre à jour des services après une modification du fichier :

Terminal window
nerdctl compose up --build
  1. Lister les projets en cours d’exécution

Pour voir les applications Compose actives :

Terminal window
nerdctl compose ps
  1. Inspecter les journaux d’un service

Pour suivre les journaux d’un service spécifique :

Terminal window
nerdctl compose logs web

Ajoutez -f pour suivre les journaux en temps réel :

Terminal window
nerdctl compose logs -f web
  1. Exécuter une commande dans un conteneur d’un service

Pour interagir avec un conteneur d’un service défini dans le fichier Compose :

Terminal window
nerdctl compose exec web sh
  1. Supprimer les volumes avec les services

Pour supprimer les volumes persistants lors de l’arrêt des services :

Terminal window
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

Plus d’infos