Comment obtient-on la taille d'une image Docker avant ils la tirent sur leur machine?
Lorsque vous recherchez une image Docker sur Docker Hub, il y aura 2 onglets- Repo Info
et Tags
. Ouvrez l'onglet Tags et vous verrez les tailles de tous les types d'images que vous pouvez tirer pour cette image.
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 comme Microsoft Container Registry. Je trouve 3 façons.
docker manifest inspect
pour observer les données du manifeste, ce qui peut vous donner une idée sur 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
Autoriser docker manifest inspect
, Éditer ~/.docker/config.json
fichier et définissez experimental
sur enable
. (Référence: docker manifest inspect )
Poussez l'image vers Docker Hub et vous pouvez obtenir la taille compressée de l'image sur le site Web de Docker Hub.
Utilisation docker save
pour enregistrer l'image dans un fichier .tar, puis la compresser dans 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
Les images Docker ont de nombreux calques, donc la taille totale de l'image dépendra du nombre de calques que votre image utilise.
Un bon outil pour visualiser vos images et leurs calques (y compris la taille totale) dans votre registre Docker est ceci Calques d'image de Century Link Labs
Github: imagelayers-graph
Si vous regardez vraiment dans le code 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, alors pendant l'extraction de l'image, le docker recueille d'abord les informations sur l'image du registre comme le nombre de couches, la taille de chaque couche, etc. etc.
Je vous renvoie à lire ce fichier.
https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go