Aller au contenu
Conteneurs & Orchestration medium

Introduction à nerdctl pour containerd

10 min de lecture

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.

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.

  1. Téléchargez le binaire nerdctl :

    Fenêtre de terminal
    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 :

    Fenêtre de terminal
    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 :

    Fenêtre de terminal
    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.

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 :

Fenêtre de terminal
nerdctl run -p 80:8080 -d --name mon-conteneur nginx
  1. Lister les conteneurs :

Pour voir les conteneurs actifs :

Fenêtre de terminal
nerdctl ps

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

Fenêtre de terminal
nerdctl ps -a
  1. Stopper un conteneur

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

Fenêtre de terminal
nerdctl stop mon-conteneur
  1. Supprimer un conteneur

Pour supprimer un conteneur arrêté :

Fenêtre de terminal
nerdctl rm mon-conteneur

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

Fenêtre de terminal
nerdctl rm -f mon-conteneur
  1. Télécharger une image

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

Fenêtre de terminal
nerdctl pull alpine

Vous pouvez également spécifier une version :

Fenêtre de terminal
nerdctl pull nginx:1.23
  1. Lister les images locales

Affichez toutes les images disponibles sur votre machine :

Fenêtre de terminal
nerdctl images
  1. Construire une image

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

Fenêtre de terminal
nerdctl build -t mon-image:1.0 .
  1. Inspecter un conteneur ou une image

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

Fenêtre de terminal
nerdctl inspect mon-conteneur

Ou sur une image :

Fenêtre de terminal
nerdctl inspect alpine
  1. Afficher les logs

Pour consulter les journaux d’un conteneur :

Fenêtre de terminal
nerdctl logs mon-conteneur
  1. Lancer un terminal interactif

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

Fenêtre de terminal
nerdctl exec -it mon-conteneur sh

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 :

Fenêtre de terminal
nerdctl network create mon-reseau

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

Vérifiez la liste des réseaux disponibles :

Fenêtre de terminal
nerdctl network ls
  1. Connecter un conteneur à un réseau

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

Fenêtre de terminal
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 :

Fenêtre de terminal
nerdctl network inspect mon-reseau
  1. Supprimer un réseau

Pour supprimer un réseau inutilisé :

Fenêtre de terminal
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 :

Fenêtre de terminal
nerdctl volume create mon-volume

Lister les volumes :

Fenêtre de terminal
nerdctl volume ls
  1. Monter un volume dans un conteneur

Pour monter un volume dans un conteneur :

Fenêtre de terminal
nerdctl run --rm -d --name conteneur-vol -v mon-volume:/data nginx
  1. Inspecter un volume

Pour afficher les détails d’un volume :

Fenêtre de terminal
nerdctl volume inspect mon-volume
  1. Supprimer un volume

Pour supprimer un volume inutilisé :

Fenêtre de terminal
nerdctl volume rm mon-volume

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 :

Fenêtre de terminal
nerdctl compose up -d
  1. Arrêter les services Compose

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

Fenêtre de terminal
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 :

Fenêtre de terminal
nerdctl compose up --build
  1. Lister les projets en cours d’exécution

Pour voir les applications Compose actives :

Fenêtre de terminal
nerdctl compose ps
  1. Inspecter les journaux d’un service

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

Fenêtre de terminal
nerdctl compose logs web

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

Fenêtre de terminal
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 :

Fenêtre de terminal
nerdctl compose exec web sh
  1. Supprimer les volumes avec les services

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

Fenêtre de terminal
nerdctl compose down -v

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

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.