Definition

Image de conteneur

Une image de conteneur est un fichier statique non modifiable. Il renferme un code exécutable de manière à exécuter un processus isolé dans une infrastructure informatique.

L'image inclut les bibliothèques et les outils système, et les autres paramètres des plateformes nécessaires à l'exécution d'un programme logiciel sur une plateforme de conteneurisation comme Docker ou CoreOS Rkt. Elle partage le noyau du système d'exploitation de sa machine hôte.

Une image de conteneur est compilée à partir des couches du système de fichiers sur une image parente ou de base. Cette superposition de couches favorise la réutilisation des différents composants : l'utilisateur ne repart pas de zéro à chaque projet. Côté technique, une image de base sert à construire une image totalement nouvelle alors que la présence d'un parent sous-entend la modification d'une image existante. Dans la pratique toutefois, les termes sont utilisés l'un pour l'autre.

Types d'images de conteneur

Un utilisateur crée entièrement une image de conteneur à l'aide de la commande de création (build) d'une plateforme de conteneurs comme Docker. Le créateur de l'image peut la mettre à jour progressivement pour y ajouter des fonctionnalités, corriger des bogues ou modifier le produit d'une façon ou d'une autre. Il peut aussi la modifier pour l'utiliser comme base d'un nouveau conteneur.

Pour une automatisation accrue, les couches sont décrites individuellement par l'utilisateur dans un fichier Dockerfile, puis assemblées en image. Chaque commande du fichier Dockerfile crée une nouvelle couche dans l'image. On peut aussi automatiser la création d'une image de conteneur avec un outil d'intégration continue comme Jenkins.

De nombreux éditeurs de logiciels mettent à disposition des images de leurs produits. Par exemple, Microsoft propose une image de conteneur de SQL Server 2017 qui s'exécute sur Docker. Les partisans des conteneurs doivent savoir que certaines images de conteneurs sont corrompues, frauduleuses et malveillantes, et parfois maquillées pour ressembler aux images officielles des éditeurs.

Les images de conteneurs sont stockées dans un registre privé ou public d'un référentiel comme Docker Hub. L'auteur de l'image l'envoie au registre et l'utilisateur va l'y chercher quand il veut l'exécuter comme conteneur. Les fonctionnalités comme Docker Content Trust utilisent les signatures numériques pour vérifier si des fichiers d'images téléchargés depuis des référentiels publics sont d'origine et sans altération. Toutefois, cette vérification supplémentaire de l'authenticité n'empêche pas la création ou la diffusion de programmes malveillants.

Certaines images sont à dessein minimales alors que d'autres sont volumineuses. Elles sont généralement de l'ordre de dizaines de mégaoctets.

Images de conteneurs et dépôt

Une seule image de conteneur peut être déployée sous forme de plusieurs conteneurs identiques en production.

Avantages et attributs d'une image de conteneur

Le format de l'image de conteneur est prévu pour un téléchargement rapide et un démarrage instantané. Un conteneur en exécution consomme généralement moins de puissance de calcul et de mémoire qu'une machine virtuelle comparable.

Les images sont identifiées par les 12 premiers caractères d'un véritable identifiant et leur taille virtuelle se mesure en nombre de couches sous-jacentes distinctes. On peut leur attribuer des mots-clés. Dans le cas contraire, elles ne sont indexées que par le véritable identifiant.

Pour une interopérabilité maximale, les images de conteneurs respectent des normes ouvertes et s'exécutent sur différentes infrastructures, notamment des machines physiques et virtuelles et des instances en cloud. Dans les déploiements de conteneurs, les applications sont isolées les unes des autres et indépendantes de l'infrastructure sous-jacente.

Inconvénients des images de conteneur

Les services informatiques des entreprises doivent détecter les images frauduleuses et former aux bonnes pratiques les utilisateurs qui vont chercher des images dans des référentiels publics. Pour contourner le problème, une équipe peut limiter la liste d'images disponibles.

En plus de l'authenticité, on fait face à un risque de prolifération d'images de conteneurs. Les entreprises finissent par se retrouver avec différentes images de conteneurs qui font la même chose ou des images inutilisées mais non supprimées.

De plus, les conteneurs arrêtés ne sont pas automatiquement supprimés : ils continuent d'occuper des ressources de stockage. Des commandes comme docker rmi et docker rm permettent de supprimer les images et les conteneurs inutilisés.

Cette définition a été mise à jour en août 2018

Pour approfondir sur Virtualisation de serveurs

Close