Para fines de investigación, estoy tratando de rastrear el registro público de Docker ( https://registry.hub.docker.com/ ) y averiguar 1) cuántas capas tiene una imagen promedio y 2) los tamaños de estas capas para obtener una idea de la distribución.
Sin embargo, estudié la API y las bibliotecas públicas, así como los detalles en github, pero no puedo encontrar ningún método para:
- recuperar todos los repositorios / imágenes públicos (incluso si son miles, todavía necesito una lista de inicio para recorrer)
- encontrar todas las capas de una imagen
- encuentre el tamaño de una capa (por lo tanto, no una imagen sino para la capa individual).
¿Alguien puede ayudarme a encontrar una manera de recuperar esta información?
¡Gracias!
EDITAR: ¿alguien puede verificar que la búsqueda de '*' en el registro de Docker devuelve todos los repositorios y no solo cualquier cosa que mencione '*' en cualquier lugar? https://registry.hub.docker.com/search?q=*
image
docker
web-crawler
user134589
fuente
fuente
docker history myimage
y verás el tamaño de cada capa. De manera más general, en una imagen, puede hacerdocker history myimage | awk 'NR>1 {print $1}' | xargs docker inspect --format '{{ ((index .ContainerConfig.Cmd ) 0) }}'
para ver qué comandos se emitieron para crear la imagenhttps://registry.hub.docker.com/search?q=*
muestra para mí 87031 repositorios,Respuestas:
Puede encontrar las capas de las imágenes en la carpeta / var / lib / docker / aufs / layer; proporcione si configuró el controlador de almacenamiento como aufs (opción predeterminada)
Ejemplo:
Ahora para ver las capas de los contenedores que fueron creados con la imagen "Ubuntu"; vaya al directorio / var / lib / docker / aufs / layer y cat, el archivo comienza con el ID del contenedor (aquí es 0ca502fa6aae *)
Esto mostrará el resultado de la misma ejecutando
Para ver el ID de capa completo; ejecutar con la opción --no-trunc como parte del comando de historial.
fuente
docker history
El comando no dará las capas de imagen como se muestra en la carpeta / var / lib / docker / aufs / layer. Lea la actualización aquí .docker history
El comando ya no indica la información de almacenamiento en disco de la capa real en el host de la ventana acoplable. Consulte este blogPrimero puede encontrar la identificación de la imagen usando:
Luego, busque las capas de la imagen y sus tamaños:
Nota: estoy usando la versión 1.13.1 de Docker
fuente
Echa un vistazo a dive escrito en golang.
¡Impresionante herramienta!
fuente
En mi opinión,
docker history <image>
es suficiente. Esto devuelve el tamaño de cada capa:fuente
Tienen una muy buena respuesta aquí: https://stackoverflow.com/a/32455275/165865
Simplemente ejecute debajo de las imágenes:
fuente
Esto inspeccionará la imagen de la ventana acoplable e imprimirá las capas:
fuente
una herramienta más: https://github.com/CenturyLinkLabs/dockerfile-from-image
GUI usando ImageLayers.io
fuente
https://hub.docker.com/search?q=* muestra todas las imágenes en todo el hub de Docker, no es posible obtener esto a través del comando de búsqueda ya que no acepta comodines.
A partir de la v1.10, puede encontrar todas las capas en una imagen tirando de ella y usando estos comandos:
3) El tamaño se puede encontrar en
/var/lib/docker/image/aufs/layerdb/sha256/{LAYERID}/size
aunque LAYERID! = Los diff_ids encontrados con el comando anterior. Para esto, debe mirar/var/lib/docker/image/aufs/layerdb/sha256/{LAYERID}/diff
y comparar con la salida del comando anterior para que coincida correctamente con el diff_id y el tamaño correctos.fuente
De hecho, es posible consultar el manifiesto o la información de blob desde el servidor de registro de Docker sin extraer la imagen al disco local.
Puede consultar la API Registry v2 para obtener el manifiesto de la imagen.
Tenga en cuenta que debe manejar una versión de manifiesto diferente. Para v2 , puede obtener directamente el tamaño de la capa y el resumen de blob. Para el manifiesto v1 , puede HEAD la URL de descarga de blob para obtener el tamaño real de la capa.
Existe un script simple para manejar los casos anteriores que se mantendrá continuamente.
fuente
No es exactamente la pregunta original, pero para encontrar la suma total de todas las imágenes sin contar dos veces las capas compartidas, lo siguiente es útil (ubuntu 18):
fuente
Resolví este problema usando la función de búsqueda en el sitio web de Docker donde '*' es una búsqueda válida que devuelve 200k repositorios y luego rastreé cada página individual. El análisis de HTML me permite extraer todos los nombres de imágenes en cada página.
fuente