À des fins de recherche, j'essaie d'explorer le registre Docker public ( https://registry.hub.docker.com/ ) et de savoir 1) combien de couches une image moyenne possède et 2) les tailles de ces couches pour obtenir un idée de la distribution.
Cependant, j'ai étudié l'API et les bibliothèques publiques ainsi que les détails sur le github mais je ne trouve aucune méthode pour:
- récupérer tous les référentiels / images publics (même si ce sont des milliers, j'ai encore besoin d'une liste de départ pour parcourir)
- trouver toutes les couches d'une image
- trouver la taille d'un calque (donc pas une image mais pour le calque individuel).
Quelqu'un peut-il m'aider à trouver un moyen de récupérer ces informations?
Je vous remercie!
EDIT: est-ce que quelqu'un est capable de vérifier que la recherche de '*' dans le registre Docker renvoie tous les référentiels et pas n'importe quoi qui mentionne '*' n'importe où? https://registry.hub.docker.com/search?q=*
image
docker
web-crawler
user134589
la source
la source
docker history myimage
et vous verrez la taille de chaque couche. Plus généralement, sur une image, vous pouvez fairedocker history myimage | awk 'NR>1 {print $1}' | xargs docker inspect --format '{{ ((index .ContainerConfig.Cmd ) 0) }}'
pour voir quelles commandes ont été émises pour créer l'imagehttps://registry.hub.docker.com/search?q=*
montre pour moi 87031 référentiels,Réponses:
Vous pouvez trouver les couches des images dans le dossier / var / lib / docker / aufs / couches; fournir si vous avez configuré le pilote de stockage en tant que aufs (option par défaut)
Exemple:
Maintenant, pour voir les couches des conteneurs qui ont été créées avec l'image "Ubuntu"; allez dans le répertoire / var / lib / docker / aufs / layer et cat le fichier commence par l'ID du conteneur (ici c'est 0ca502fa6aae *)
Cela montrera le résultat de la même chose en exécutant
Pour afficher l'ID de couche complet; exécuter avec l'option --no-trunc dans le cadre de la commande history.
la source
docker history
La commande ne donnera pas les couches d'image comme indiqué dans le dossier / var / lib / docker / aufs / couches. Lisez la mise à jour ici .docker history
La commande n'indique plus les informations de stockage sur le disque de couche réelle sur l'hôte docker. Consultez ce blogVous pouvez d'abord trouver l'ID de l'image en utilisant:
Recherchez ensuite les calques de l'image et leurs tailles:
Remarque: j'utilise la version 1.13.1 de Docker
la source
Découvrez la plongée écrite en golang.
Outil génial!
la source
À mon avis,
docker history <image>
c'est suffisant. Cela renvoie la taille de chaque couche:la source
Ils ont une très bonne réponse ici: https://stackoverflow.com/a/32455275/165865
Exécutez simplement les images ci-dessous:
la source
Cela inspectera l'image du docker et imprimera les calques:
la source
un autre outil: https://github.com/CenturyLinkLabs/dockerfile-from-image
GUI utilisant ImageLayers.io
la source
https://hub.docker.com/search?q=* montre toutes les images dans tout le hub Docker, il n'est pas possible d'obtenir cela via la commande de recherche car elle n'accepte pas les caractères génériques.
À partir de la v1.10, vous pouvez trouver toutes les couches d'une image en la tirant et en utilisant ces commandes:
3) La taille peut être trouvée dans
/var/lib/docker/image/aufs/layerdb/sha256/{LAYERID}/size
bien que LAYERID! = Les diff_ids trouvés avec la commande précédente. Pour cela, vous devez regarder/var/lib/docker/image/aufs/layerdb/sha256/{LAYERID}/diff
et comparer avec la sortie de la commande précédente pour correspondre correctement au diff_id et à la taille corrects.la source
Il est en effet possible d'interroger les informations du manifeste ou de l'objet blob à partir du serveur de registre docker sans extraire l'image sur le disque local.
Vous pouvez vous référer à l' API Registry v2 pour récupérer le manifeste de l'image.
Notez que vous devez gérer une version de manifeste différente. Pour la v2, vous pouvez directement obtenir la taille du calque et le résumé du blob. Pour le manifeste v1 , vous pouvez HEAD l'URL de téléchargement de blob pour obtenir la taille réelle de la couche.
Il existe un script simple pour gérer les cas ci-dessus qui sera maintenu en permanence.
la source
Pas exactement la question d'origine mais pour trouver la somme totale de toutes les images sans compter deux fois les couches partagées, ce qui suit est utile (ubuntu 18):
la source
J'ai résolu ce problème en utilisant la fonction de recherche sur le site Web de Docker où «*» est une recherche valide qui renvoie 200 000 référentiels, puis j'ai analysé chaque page individuelle. L'analyse HTML me permet d'extraire tous les noms d'images sur chaque page.
la source