Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

368
Vistas
¿Cómo verifico si la imagen de mi ventana acoplable local está desactualizada, sin presionar desde otro lugar?

Estoy ejecutando una aplicación de reacción en un contenedor docker, en un servidor Coreos. Digamos que se extrajo de dockerhub de https://hub.docker.com/r/myimages/myapp .

Ahora quiero verificar periódicamente si la imagen de dockerhub para el contenedor de la aplicación se ha actualizado, para ver si la imagen que estoy ejecutando localmente está atrasada.

¿Cuál sería la forma más eficiente de verificar si una imagen acoplable local está desactualizada en comparación con la imagen remota? Todas las soluciones que he encontrado hasta ahora son scripts bash o servicios externos que impulsan una actualización. Me gustaría encontrar una solución que sea lo más nativa posible de la ventana acoplable y me gustaría abstenerme de enviar una notificación desde otro lugar (para alertar al servidor de una imagen actualizada).

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede consultar la API de registro para el resumen de la imagen y compararlo con lo que extrajo.

 $ cat digest-v2.sh #!/bin/sh ref="${1:-library/ubuntu:latest}" repo="${ref%:*}" tag="${ref##*:}" acceptM="application/vnd.docker.distribution.manifest.v2+json" acceptML="application/vnd.docker.distribution.manifest.list.v2+json" token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" \ | jq -r '.token') curl -H "Accept: ${acceptM}" \ -H "Accept: ${acceptML}" \ -H "Authorization: Bearer $token" \ -I -s "https://registry-1.docker.io/v2/${repo}/manifests/${tag}" $ ./digest-v2.sh library/busybox:latest HTTP/1.1 200 OK Content-Length: 2080 Content-Type: application/vnd.docker.distribution.manifest.list.v2+json Docker-Content-Digest: sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a Docker-Distribution-Api-Version: registry/2.0 Etag: "sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a" Date: Sun, 11 Oct 2020 21:04:59 GMT Strict-Transport-Security: max-age=31536000

Puede comparar ese encabezado ETag o Docker-Content-Digest con la referencia de registro en la imagen que extrajo anteriormente:

 $ docker image inspect busybox:latest --format '{{json .RepoDigests}}' | jq . [ "busybox@sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a" ] $ docker image pull busybox:latest latest: Pulling from library/busybox Digest: sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a Status: Image is up to date for busybox:latest docker.io/library/busybox:latest

También he estado trabajando en algunas API y CLI de Go para trabajar con más registros en los que es posible que deba aprobar diferentes tipos de autorización. Ese proyecto está en regclient/regclient e incluye un comando regctl .

 $ regctl image digest --list busybox:latest sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a
over 4 years ago · Santiago Trujillo Denunciar

0

Si está utilizando Docker Hub, puede usar un Webhook para notificar al host de Docker sobre una actualización y tomar medidas al respecto.

Usar el webhook sería la forma "simple" de hacerlo (creo), de lo contrario, tendría que hacer algún tipo de rastreo en la extracción de la ventana acoplable o como lo explica @alebianco comparando algunos hash o fechas de compilación/creación.

Aquí están los documentos al respecto: https://docs.docker.com/docker-hub/webhooks/

over 4 years ago · Santiago Trujillo Denunciar

0

hay una API disponible para Docker Hub

Debería poder obtener la lista de etiquetas y, a partir de ahí, los detalles del manifiesto.


editar

Investigué un poco, parece que no exponen ningún tipo de suma de verificación de la imagen, es manifiesto o las capas que la componen.

Lo más parecido que encontré es la fecha de creación... que no sugeriría usar si estás tratando de hacer algo remotamente seguro.

De todos modos, primero debe obtener un token de acceso

 curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/ubuntu:pull"

extraiga el token de la respuesta, luego puede cargar el manifiesto de una versión de imagen

 curl --header "Authorization: Bearer $TOKEN" https://index.docker.io/v2/library/ubuntu/manifests/latest

busque en el objeto de historial del json devuelto, encontrará una propiedad creada .

Luego puede obtener la fecha de creación de su imagen local con

 docker inspect --format "{{json .Created}}" ubuntu:latest

Compara los dos y encogerse de distancia ...

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda