Je travaillais il y a quelques jours sur Exegol : l’environnement de pentest Docker qui remplace Kali Linux et je cherchais à savoir quelle image Docker était la plus lourde parmi celles proposées. Pour ceux qui se posent la même question, voici différentes manière d’obtenir l’information.
Pourquoi connaître la taille des images Docker
Il est essentiel de connaître et de surveiller la taille des images Docker, surtout les plus lourdes, pour gérer l’espace disque qui n’est pas illimité. Au même titre qu’il permet d’optimiser les temps de build et de déploiement, les images les plus lourdes prennent plus de temps aussi bien d’un point de vue réseau que de chargement. Cela aboutit à un ralentissement les différentes du cycle de vie de l’applicatif. Le démarrage d’un container basé sur une image de grande taille se voit impacté.
Qu’est-ce qu’une image Docker
Les images Docker sont des modèles binaires immuables qui embarquent les dépendances nécessaires pour exécuter une ou plusieurs applications. On retrouve, dans la majorité des cas, le système d’exploitation (on peut faire des images from scratch également), les logiciels et outils tiers, souvent utiles pour les applicatifs.
De ce fait, le poids peut varier considérablement de quelques mégaoctets à plusieurs dizaines de gigaoctets. Une image Docker la plus lourde possédera un système d’exploitation et de nombreuses dépendances.
Comment trouver l’image Docker la plus lourde
En ligne de commande (CLI)
Après avoir lancé le service Docker, vous pouvez utiliser la commande « docker images » qui vous affichera le poids de toutes les images.
Le problème de cette commande est la lisibilité si vous avez énormément d’images. Dans ce cas, on privilégiera plutôt :
docker images | sort -k5
Cette commande affiche les images Docker et trie en s’appuyant sur la cinquième colonne (-k5).
En interface graphique (GUI)
Nous pouvons obtenir le même résultat qu’en ligne de commande, via l’interface graphique. Pour cela, rendez-vous sur le tableau de bord Docker puis dans l’onglet « Images ». Si vous cliquez sur une colonne, vous pouvez alors trier par ordre croissant ou décroissant.
État des lieux général
Pour avoir une vue plus complète, nous pouvons exécuter la commande ci-dessous, qui fonctionne de la même manière que « df » avec un périmètre différent, l’un est dédié à l’environnement Docker et l’autre à tout le système :
docker system df
Cette commande met en exergue combien d’espace disque est utilisé par les images Docker, les conteneurs, les volumes et le cache.
Dites au revoir à votre image Docker la plus lourde
Si vous n’utilisez plus une ou plusieurs images, vous pouvez les supprimer et récupérer de l’espace disque à l’aide de la commande :
docker image prune
Optimiser ses images
Lors de phases de build, qui permettent de créer l’image, réduisez le nombre de couches en regroupant les commandes et les fichiers inutiles. Dans la mesure du possible, essayez d’utiliser des images de base minimalistes comme « Alpine » ou, encore mieux, partez de rien FROM « Scratch ».