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.