如何检查我的本地泊坞窗图像是否过时,而不从其他地方推送?
我正在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或者from
string中解决了这个问题。
我把所有的东西都放到docker中心的docker图像上。
我只是在我的gitlab cipipe道中运行图像。 如果基本图像过时,则打印所有较新的版本,以便您可以轻松选取标签。
链接: https : //hub.docker.com/r/olafnorge/docker-image-crawler/