bash - container - ¿Cómo verifico si la imagen de mi ventana acoplable local está desactualizada, sin empujar desde otro lugar?
coreos docker (3)
Resolví este problema con un rastreador que verifica el archivo Docker directamente o una cadena from
.
Realicé una copia de seguridad de todo en una imagen acoplable que se podía encontrar en el centro de acoplamiento .
Simplemente ejecuto la imagen en mi gitlab ci pipeline. Si la imagen base está desactualizada, imprime todas las versiones más nuevas para que pueda elegir la etiqueta fácilmente.
Enlace: https://hub.docker.com/r/olafnorge/docker-image-crawler/
Estoy ejecutando una aplicación de reacción en un contenedor docker, en un servidor Coreos. Digamos que se ha extraído de dockerhub desde 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á detrás.
¿Cuál sería la forma más eficiente de verificar si una imagen de la ventana acoplable local no está actualizada en comparación con la imagen remota? Todas las soluciones que he encontrado hasta ahora son scripts de 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).
Si está utilizando Docker Hub, puede usar un Webhook para notificar al host de la ventana acoplable 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 el tirador de la ventana acoplable o como lo explica @alebianco comparando algunos hashs o fechas de creación / creación.
Aquí está la documentación al respecto: https://docs.docker.com/docker-hub/webhooks/
hay una API disponible para Docker Hub
Debería poder obtener la lista de etiquetas, y desde allí los detalles del manifiesto
editar
Hice algunas excavaciones, parece que no exponen ningún tipo de suma de comprobación de la imagen, es manifiesto o las capas que la componen.
Lo más cercano que encontré es la fecha de creación ... que no sugeriría usar si estás tratando de hacer algo de forma remota segura.
De todos modos, primero debes 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
Mire el objeto histórico del json devuelto, encontrará una propiedad creada .
A continuación, puede obtener su fecha de creación de imagen local con
docker inspect --format "{{json .Created}}" ubuntu:latest
Compara los dos y encoge ...