我如何检查我的本地码头形象是否过时,而不从其他地方推?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (58)

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

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

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

提问于
用户回答回答于

如果使用的是Docker Hub,则可以使用Weebhook通知Docker主机有关更新的信息,并对此采取相应措施。

使用weebhook会是“简单”的方式(我认为),否则你将不得不在docker pull中做某种类型的爬行,或者像@alebianco比较一些散列或构建/创建日期所解释的那样。

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

用户回答回答于

有一个用于Docker Hub 的API

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

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

我发现的最接近的东西是创建日期......如果试图使某些东西远程安全,我不建议使用它。

无论如何,需要先获取访问令牌

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的历史对象,你会发现一个创建的属性。

然后你可以用你的本地图片创建日期

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

比较这两个并且离开...

扫码关注云+社区

领取腾讯云代金券