如何检查我的本地泊坞窗图像是否过时,而不从其他地方推送?

我正在Coreos服务器上的docker容器中运行一个反应应用程序。 假设它是从https://hub.docker.com/r/myimages/myapp dockerhub中提取的。

现在我想定期检查应用程序容器的dockerhub图像是否已经更新,看看我在本地运行的图像是否在后面。

与远程图像相比,检查本地泊坞窗图像是否过时最有效的方法是什么? 到目前为止,我发现的所有解决scheme都是bash脚本或推送更新的外部服务。 我想find一个尽可能原生docker解决scheme,并希望避免从其他地方推送通知(以提醒服务器更新的图像)。

有一个可用于Docker Hub的API

您应该能够获取标签列表,并从那里获取清单详细信息


编辑

我做了一些挖掘,看起来像他们不暴露任何forms的校验和,它是明显的或构成它的图层。

我发现的最接近的东西是创builddate…如果您试图使某些远程安全的东西,我不会build议使用。

无论如何,你需要先获得一个访问令牌

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

从响应中提取令牌,然后可以加载映像版本的清单

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

查看返回的json的历史对象,你会发现一个创build的属性。

然后你可以得到你的本地图像创builddate

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

比较两者,并c离…

如果您使用的是Docker Hub,则可以使用Weebhook来通知Docker主机有关更新的信息,并对其进行操作。

使用weebhook将是“简单”的方式来做到这一点(我认为),否则你将不得不在docker pull中做某种types的爬行,或者像@alebianco比较一些散列或者构build/创builddate那样。

这里是关于它的文档: https : //docs.docker.com/docker-hub/webhooks/

我用一个爬虫直接检查Dockerfile或者fromstring中解决了这个问题。

我把所有的东西都放到docker中心的docker图像上。

我只是在我的gitlab cipipe道中运行图像。 如果基本图像过时,则打印所有较新的版本,以便您可以轻松选取标签。

链接: https : //hub.docker.com/r/olafnorge/docker-image-crawler/