Docker: Comment get la taille de l'image?

Nous pouvons searchr des files image disponibles sur le site docker comme ceci:

  • https://index.docker.io/search?q=ubuntu

Comment puis-je dire quelle sera la taille de téléchargement avant de tirer?

docker.io pull [image] 

    En regardant l'API pour Docker, Docker Remote API v1.10 , il ne semble pas qu'il y ait moyen d'get la taille des images. La section "2.2 Images" montre la spécification de la requête sur les images.

    Exemple

      GET /images/json?all=0 HTTP/1.1 **Example response**: HTTP/1.1 200 OK Content-Type: application/json [ { "RepoTags": [ "ubuntu:12.04", "ubuntu:precise", "ubuntu:latest" ], "Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c", "Created": 1365714795, "Size": 131506275, "VirtualSize": 131506275 }, { "RepoTags": [ "ubuntu:12.10", "ubuntu:quantal" ], "ParentId": "27cf784147099545", "Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc", "Created": 1364102658, "Size": 24653, "VirtualSize": 180116135 } ] 

    Mais cette requête doit aller à l'encontre d'une instance Docker réelle. Voici un exemple montrant comment on pourrait utiliser la requête RESTful ci-dessus:

     $ echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock HTTP/1.0 200 OK Content-Type: application/json Content-Length: 858 Connection: close Date: Fri, 20 Dec 2013 16:02:41 GMT [{"Repository":"ubuntu","Tag":"12.04","Id":"8dbd9e392...", "Created":1365714795,"Size":131502179,"VirtualSize":131502179}, {"Repository":"ubuntu","Tag":"latest","Id":"8dbd9e392...", "Created":1365714795,"Size":131502179,"VirtualSize":131502179}, {"Repository":"ubuntu","Tag":"precise","Id":"8dbd9e392...", "Created":1365714795,"Size":131502179,"VirtualSize":131502179}, {"Repository":"ubuntu","Tag":"12.10","Id":"b750fe792...", "Created":1364102658,"Size":24653,"VirtualSize":180116135}, {"Repository":"ubuntu","Tag":"quantal","Id":"b750fe792...", "Created":1364102658,"Size":24653,"VirtualSize":180116135}] 

    Je n'ai vu aucun moyen d'interroger les référentiels publics en utilisant cet appel RESTful particulier. La seule autre méthode RESTful qui ressemblait à interroger les images de docker.io était via la search, GET /images/search , mais l'API ne montre aucun atsortingbut de taille returnné pour cela.

    Les references

    • DOCKER D'UNE DISTANCE – L'API À DISTANCE

    Ce n'est pas une réponse directe à votre question mais j'espère que cela sera utile quand même.

    Dans le script d'utilisation de disque dans mes expériences Docker j'utilise quelque chose comme ceci:

     docker run --entrypoint=/bin/sh $image -c 'du -sh / 2>/dev/null | cut -f1' 

    Donc, vous pouvez exécuter, par exemple:

     docker run --entrypoint=/bin/sh ubuntu -c 'du -sh / 2>/dev/null | cut -f1' 

    Ou vous pouvez download ce script: utilisation du disque et exécuter par exemple ./disk-usage "ubuntu busybox gcc" pour avoir l'utilisation du disque (comme indiqué par du -sh ) affiché pour ces 3 images:

     Image Disk usage ----- ---------- ubuntu 209M busybox 2.6M gcc 1.5G 

    S'il vous plaît noter que cela ne montre pas le téléchargement réel requirejs pour une image donnée, et il affichera le résultat après le téléchargement de l'image, mais il donne une idée sur la façon dont est gonflé une image donnée par rapport aux autres.

    Vous pouvez l'exécuter sur une machine pour décider si vous souhaitez download ces images sur d'autres machines ou pour les utiliser.

    Si vous regardez vraiment le code de docker pour l'opération de traction, je pense que votre réponse est là. Si l'image du conteneur n'est pas caching, lors de l'extraction de l'image, le docker collecte d'abord les informations sur l'image à partir du registre comme le nombre de couches, la taille de chaque couche, etc.

    Je ferais reference à lire ce file.

    https://github.com/moxiegirl/docker/blob/master/dissortingbution/xfer/download.go