web-dev-qa-db-fra.com

Obtenir la taille d'une image Docker avant un pull?

Comment obtient-on la taille d'une image Docker avant ils la tirent sur leur machine?

33
Joseph Idziorek

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.

11
Akshay Mahajan
  1. Pour l'image sur Docker Hub:
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
  1. Pour l'image sur un autre registre comme Microsoft Container Registry. Je trouve 3 façons.

    • Utilisation 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
4
binaryDi

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

0
Rico

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

0
Arif A.