with tag quiet name imagenes example different and docker docker-registry

tag - imagenes docker



¿Dónde puedo encontrar el código sha256 de una imagen acoplable? (7)

Me gustaría extraer las imágenes de centos, tomcat, ... usando su código sha256, como en

docker pull myimage@sha256:0ecb2ad60

pero no puedo encontrar el código sha256 para usar en ningún lado.

Revisé el repositorio de dockerhub en busca de alguna pista del código sha256, pero no pude encontrar ninguna. Descargué las imágenes por su etiqueta

docker pull tomcat:7-jre8

y verifiqué la imagen con la docker inspect para ver si hay un código sha256 en los metadatos, pero no hay ninguno (agregar el código sha256 de la imagen probablemente cambiaría el código sha256).

¿Tengo que calcular yo mismo el código sha256 de una imagen y usarlo?


Última respuesta

Editar sugerido por OhJeez en los comentarios.

docker inspect --format=''{{index .RepoDigests 0}}'' $IMAGE

Respuesta original

Creo que también puedes obtener esto usando

docker inspect --format=''{{.RepoDigests}}'' $IMAGE

Funciona solo en Docker 1.9 y si la imagen fue originalmente extraída por el resumen. github.com/docker/docker/issues/17670


Acabo de verlo:

Cuando saco una imagen, el código sha256 se muestra en la parte inferior de la salida (Resumen: sha ....):

docker pull tomcat:7-jre8 7-jre8: Pulling from library/tomcat 902b87aaaec9: Already exists 9a61b6b1315e: Already exists ... 4dcef5c50d60: Already exists Digest: sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f Status: Image is up to date for tomcat:7-jre8

Este código sha

sha256: c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

se puede usar para extraer la imagen luego con

docker pull tomcat @ sha256: c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

De esta manera, puede estar seguro de que la imagen no se cambia y se puede usar de forma segura para la producción.


Además de las respuestas existentes, puede usar la opción --digests mientras hace docker images para obtener una lista de resúmenes para todas las imágenes que tiene.

docker images --digests

Puede agregar un grep para profundizar más

docker images --digests | grep tomcat


Como mencionó @zelphir, el uso de resúmenes no es una buena manera, ya que no existe para una imagen solo local. Supongo que la ID de imagen sha es la más precisa y consistente en todas las etiquetas / pull / push, etc.

docker inspect --format=''{{index .Id}}'' $IMAGE

Hace el truco.


Este debería haber sido el campo Id, que podría ver en la antigua API de Docker Hub en deprecated

GET /v1/repositories/foo/bar/images HTTP/1.1 Host: index.docker.io Accept: application/json Parameters: namespace – the namespace for the repo repo_name – the name for the repo

Respuesta de ejemplo:

HTTP/1.1 200 Vary: Accept Content-Type: application/json [{"id": "9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f", "checksum": "b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087"}, {"id": "ertwetewtwe38722009fe6857087b486531f9a779a0c1dfddgfgsdgdsgds", "checksum": "34t23f23fc17e3ed29dae8f12c4f9e89cc6f0bsdfgfsdgdsgdsgerwgew"}]

PERO: así no es como funciona ahora con la nueva distribución de docker .
Ver problema 628: "Obtener ID de imagen con nombre de etiqueta"

La respuesta /v1/ registro /v1/ /repositories/<repo>/tags usa para enumerar la ID de la imagen junto con el identificador de etiqueta.
/v2/ solo parece dar el identificador.

Sería útil obtener la ID para compararla con la ID que se encuentra localmente. El único lugar donde puedo encontrar el ID es en la sección v1Compat del manifiesto (que es excesivo para la información que quiero)

La respuesta actual (mediados de 2015) es:

Esta propiedad de la API V1 era computacionalmente costosa por la forma en que las imágenes se almacenan en el back-end. Solo se enumeran los nombres de las etiquetas para evitar una búsqueda secundaria.
Además, la API V2 no maneja ID de imagen. Por el contrario, utiliza resúmenes para identificar capas, que pueden calcularse como propiedad de la capa y son verificables independientemente.


Puede obtenerlo por docker images --digests

REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE docker/ucp-agent 2.1.0 sha256:a428de44a9059f31a59237a5881c2d2cffa93757d99026156e4ea544577ab7f3 583407a61900 3 weeks ago 22.3 MB


Simplemente emita docker pull tomcat:7-jre8 nuevamente y obtendrá lo que desea.