Nous pouvons rechercher les fichiers image disponibles sur le site Web de docker comme ceci:
Comment puis-je savoir quelle sera la taille du téléchargement avant d'extraire?
docker.io pull [image]
Nous pouvons rechercher les fichiers image disponibles sur le site Web de docker comme ceci:
Comment puis-je savoir quelle sera la taille du téléchargement avant d'extraire?
docker.io pull [image]
Réponses:
En regardant l'API pour Docker, Docker Remote API v1.10 , il ne semble pas y avoir de moyen d'obtenir la taille des images. La section "2.2 Images" indique les spécifications relatives à l'interrogation des images.
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 s’appliquer à une instance Docker réelle. Voici un exemple montrant comment 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 à l'aide de cet appel RESTful particulier. La seule autre méthode RESTful pour laquelle vous pouviez interroger les images de docker.io était via une recherche GET /images/search
, mais l'API ne montre aucun attribut de taille renvoyé pour cela.
docker search
Ce n’est pas une réponse directe à votre question, mais j’espère que cela vous sera néanmoins utile.
Dans le script d'utilisation du disque de mes expériences Docker, j'utilise quelque chose comme ceci:
docker run --entrypoint=/bin/sh $image -c 'du -sh / 2>/dev/null | cut -f1'
Pour que vous puissiez courir, par exemple:
docker run --entrypoint=/bin/sh ubuntu -c 'du -sh / 2>/dev/null | cut -f1'
Ou vous pouvez télécharger ce script: utilisation du disque
et le lancer, par exemple, ./disk-usage "ubuntu busybox gcc"
pour du -sh
afficher l’utilisation du disque (comme indiqué par ) affichée pour ces 3 images:
Image Disk usage
----- ----------
ubuntu 209M
busybox 2.6M
gcc 1.5G
Notez que le téléchargement requis pour une image donnée n'est pas affiché. Le résultat s'affiche après le téléchargement de l'image, mais il donne une idée de la densité d'une image donnée par rapport aux autres.
Vous pouvez l'exécuter sur un ordinateur pour décider si vous souhaitez télécharger ces images sur d'autres ordinateurs ou même l'utiliser.
Pour HTTP API v2, la taille est disponible via les ressources de balises sous size
et full_size
. Voici un exemple d'URL provenant de l'un des tags de mon référentiel:
https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1
Si vous regardez vraiment dans le code du docker pour l'opération pull, je pense que votre réponse est là. Si l'image du conteneur n'est pas mise en cache, lors du tirage de l'image, docker commence par collecter les informations relatives à l'image du registre, telles que le nombre de couches, la taille de chaque couche, etc.
Je vous renvoie à lire ce fichier.
https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go
curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results[] | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i
Pour l'image sur un autre registre tel que Microsoft Container Registry. Je découvre 3 façons.
docker manifest inspect
pour observer les données du manifeste, ce qui peut vous donner une idée de la façon de gagner la taille compressée de l'image.docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' '{sum+=$NF} END {print sum}' | numfmt --to=iec-i
Pour activer docker manifest inspect
, modifiez le ~/.docker/config.json
fichier et définissez-le experimental
sur enable
. (Référence: inspection du manifeste de menu fixe )
Poussez l'image vers Docker Hub et vous pouvez obtenir la taille compressée de l'image sur le site Web de Docker Hub.
Utilisez cette option docker save
pour enregistrer une image dans un fichier .tar, puis le compresser en un fichier .tar.gz.
docker save my-image:latest > my-image.tar
# Compress the .tar file
gzip my-image.tar
# Check the size of the compressed image
ls -lh my-image.tar.gz