containerd et Docker : quelle différence ?

containerd (le nom officiel de la marque s’écrit avec une minuscule) est le runtime de conteneurs de Docker, une plateforme de conteneurisation open source. Les runtimes de conteneurs sont des composants logiciels pouvant exécuter des conteneurs sur un système d’exploitation hôte. Comparer containerd à Docker revient à mettre en parallèle un turbocompresseur et un moteur, […]

containerd

containerd (le nom officiel de la marque s’écrit avec une minuscule) est le runtime de conteneurs de Docker, une plateforme de conteneurisation open source. Les runtimes de conteneurs sont des composants logiciels pouvant exécuter des conteneurs sur un système d’exploitation hôte.

Comparer containerd à Docker revient à mettre en parallèle un turbocompresseur et un moteur, ou un système d’air conditionné et une maison. Il n’est pas possible de les comparer directement et même s’ils sont liés et presque toujours utilisés ensemble, ils ne sont pas interchangeables.

Qu’est-ce que Docker ?

Bien que Docker soit devenu synonyme du mot « conteneur », il s’agit en réalité d’un outil de développement très apprécié pour créer, utiliser et gérer des conteneurs. En d’autres termes, c’est un moteur de conteneurs, c’est-à-dire un système qui permet au code développé dans un environnement informatique de fonctionner dans un autre environnement. Docker est une plateforme qui facilite grandement le développement d’applications  en simplifiant le processus de création, d’exécution, de gestion et de distribution grâce à la virtualisation du système d’exploitation de l’ordinateur sur lequel il est installé et exécuté.

Les conteneurs sont des environnements portables et autonomes que Docker et d’autres moteurs, tels que CRI-O, RKT et LXD, utilisent pour regrouper, envoyer et exécuter des applications. Un runtime de conteneurs, comme containerd (développé par Docker), est un composant du moteur qui permet de monter le conteneur et fonctionne avec le noyau du système d’exploitation pour lancer et prendre en charge le processus de conteneurisation.

Qu’est-ce que containerd ?

containerd est un runtime de conteneurs développé par Docker qui gère le cycle de vie d’un conteneur sur une machine physique ou virtuelle (c’est-à-dire un hôte). Il crée, lance, arrête et supprime les conteneurs. Il peut également extraire des images de conteneurs des registres, monter le stockage et activer la mise en réseau d’un conteneur.

En février 2019, containerd est devenu un projet officiel au sein de la Cloud Native Computing Foundation (CNCF), au même titre que Kubernetes, Prometheus, Envoy et CoreDNS.

Fonctionnement de containerd

containerd est un démon, c’est-à-dire un programme informatique qui s’exécute en arrière-plan plutôt que sous le contrôle direct d’un utilisateur interactif. Il est disponible pour Linux et Windows.

Figure 1 : fonctionnement de containerd. Source : Docker

containerd gère l’ensemble du cycle de vie des conteneurs de son système hôte, depuis le transfert et le stockage des images jusqu’à l’exécution et la supervision, en passant par le stockage de bas niveau, les systèmes attachés au réseau, etc.

containerd et CRI-O

CRI-O est une alternative à containerd. Il s’agit d’un autre runtime de conteneurs de haut niveau qui met en œuvre l’interface CRI (Container Runtime Interface). Il extrait les images de conteneurs des registres, les gère sur le disque et lance un runtime de bas niveau pour exécuter les processus de conteneurs. Puisque containerd et CRI-O sont deux runtimes de conteneurs, vous n’aurez besoin que de l’un ou de l’autre et ne les utiliserez pas simultanément.

Docker et containerd : FAQ

Est-ce que Docker utilise toujours containerd ?

Conçu par Docker, containerd fait désormais partie de la CNCF, une organisation qui assure le support pour les déploiements basés sur Kubernetes et Docker. Docker est un projet indépendant utilisant containerd comme runtime.

Puis-je utiliser containerd à la place de Docker ?

Oui, même si containerd est un runtime de conteneurs et Docker un moteur de conteneurs. Docker est un outil qui indique au runtime, ici containerd, de créer un conteneur d’après l’image du conteneur. Même si le système d’exploitation hôte n’utilise pas le concept de conteneur, il fournit des fonctionnalités comme des espaces de noms, des groupes de contrôle (cgroups) et des systèmes de fichiers qui rendent l’utilisation d’un conteneur possible. Il est donc possible d’utiliser containerd en l’associant à un autre composant appelé runtime de bas niveau pour lui permettre d’interagir avec le noyau du système d’exploitation hôte afin de créer un conteneur et, ce faisant, d’assumer les fonctionnalités de Docker.

containerd est-il compatible avec Docker ?

Oui. containerd a été conçu par Docker, ils sont donc totalement compatibles.

Puis-je passer de Docker à containerd ?

Oui, tout à fait. Google Cloud fournit de la documentation sur la manière de procéder.

Le stockage à la demande appliqué aux conteneurs

Les conteneurs, comme tout le reste, ont besoin de stockage, et plus votre solution sera flexible et évolutive, plus vos stratégies de conteneurisation seront efficaces.

Avec le stockage par conteneurs à la demande pour le cloud hybride proposé par Pure, les développeurs bénéficient de la souplesse du cloud public, alliée à la fiabilité et à la sécurité d’une infrastructure sur site. Ils peuvent ainsi :

  • créer et mettre à jour des applications d’entreprise plus rapidement, sans compromettre la sécurité, la protection des données et les politiques de l’organisation ;
  • répondre facilement aux besoins en matière d’évolutivité et de fiabilité ;
  • protéger les applications conteneurisées via la reprise après sinistre et des sauvegardes cloud-natives optimisées pour toutes les charges de travail Kubernetes.

Découvrez Pure dès aujourd’hui. Contactez-nous pour en savoir plus.