Podemos buscar archivos de imagen disponibles en el sitio web de Docker como este:
¿Cómo puedo saber cuáles serán los tamaños de descarga antes de extraer?
docker.io pull [image]
Podemos buscar archivos de imagen disponibles en el sitio web de Docker como este:
¿Cómo puedo saber cuáles serán los tamaños de descarga antes de extraer?
docker.io pull [image]
Respuestas:
Mirando la API de Docker, Docker Remote API v1.10 , no parece que haya ninguna forma de obtener el tamaño de las imágenes. La sección "2.2 Imágenes" muestra la especificación de cómo consultar sobre imágenes.
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
}
]
Pero esta consulta debe ir en contra de una instancia real de Docker. Aquí hay un ejemplo que muestra cómo se podría usar la consulta RESTful anterior:
$ 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}]
No vi ninguna forma de consultar los repositorios públicos utilizando esta llamada RESTful particular. El único otro método RESTful que parecía que podía consultar las imágenes de docker.io fue a través de la búsqueda GET /images/search
, pero la API no muestra ningún atributo de tamaño que se devuelva para esto.
docker search
Esta no es una respuesta directa a su pregunta, pero espero que sea útil de todos modos.
En el script de uso del disco en mis experimentos de Docker , uso algo como esto:
docker run --entrypoint=/bin/sh $image -c 'du -sh / 2>/dev/null | cut -f1'
Para que pueda ejecutar, por ejemplo:
docker run --entrypoint=/bin/sh ubuntu -c 'du -sh / 2>/dev/null | cut -f1'
O puede descargar ese script: uso del disco
y ejecutar, por ejemplo, ./disk-usage "ubuntu busybox gcc"
para que se du -sh
muestre el uso del disco (según lo informado por ) para esas 3 imágenes:
Image Disk usage
----- ----------
ubuntu 209M
busybox 2.6M
gcc 1.5G
Tenga en cuenta que no muestra la descarga real requerida para una imagen determinada, y mostrará el resultado después de descargar la imagen, pero da una idea de cuán hinchada es una imagen determinada en comparación con otras.
Puede ejecutarlo en una máquina para decidir si desea descargar esas imágenes en otras máquinas o usarlo en absoluto.
Para HTTP API v2, el tamaño está disponible a través del recurso de etiquetas en size
y full_size
. Aquí hay una URL de ejemplo de una de las etiquetas de mi repositorio:
https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1
Si lo miras en el código de cargador de muelle para la operación de extracción, creo que su respuesta es no. Si la imagen del recipiente no se almacena en caché, a continuación, durante la extracción de la imagen, cargador de muelle primero recoge la información sobre la imagen del registro como el número de capas, el tamaño de cada uno de capas, etc., etc.
Me referiría a leer este archivo.
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
Para imagen en otro registro como Microsoft Container Registry. Me imagino 3 formas.
docker manifest inspect
de observar los datos del manifiesto, que le puede dar idea sobre cómo obtener el tamaño de la imagen comprimida.docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' '{sum+=$NF} END {print sum}' | numfmt --to=iec-i
Para habilitar docker manifest inspect
, edite el ~/.docker/config.json
archivo y configúrelo experimental
en enable
. (Referencia: docker manifest inspect )
Empuje la imagen a Docker Hub y podrá obtener el tamaño comprimido de la imagen en el sitio web de Docker Hub.
Use docker save
para guardar la imagen en un archivo .tar y luego comprimirlo en un archivo .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