一、背景
大家已经注意到,Docker Hub现在开始对镜像拉取进行限制,无论是免费的匿名用户,还是认证用户。在六个小时内,从一个IP地址镜像拉取的请求次数超过固定阈值(匿名用户100次,认证用户200次)后,Docker Hub就会限制其拉取带宽。虽然用户仍然可以拉取到Docker镜像,但是速度要慢得多。
您可以阅读我们之前的博客文章《绕开Docker Hub下载限制:JFrog Artifactory》(https://mp.weixin.qq.com/s/I8...),以了解Docker Hub的相关策略,以及JFrog Artifactory如何帮助您绕过这个限制。
对于依赖Docker Hub并将其作为Docker镜像中心的企业,这项新政策可能对其生产力产生重大影响。由于阈值是基于IP的,而不是基于用户的,因此这些限制可能会更快、更频繁地影响到企业的交付效率。
您知道这些变化如何影响您的交付吗?通过对JFrog日志分析的最新改进,现在JFrog Artifactory的用户可以通过JFrog的日志分析来查找并决策如何减轻这些限制的影响。本文将就此作简单的介绍。
二、使用Artifactory缓存Docker Hub的拉取请求
Artifactory的用户已经可以通过为Docker Hub建立远程仓库来降低拉取的频率。该远程仓库将代理并缓存从Docker Hub拉取的每个Docker镜像,以便将来从您的企业级制品库/镜像中心中直接拉取该镜像。
这样,只有从Docker Hub到缓存的第一次拉取才会计入Docker Hub的拉取限制。您最常使用的Docker镜像将始终以全速传递到您的构建中。而且一旦做了缓存,即使Docker Hub上的相应镜像变得不可用,这些镜像在企业级制品库/镜像中心中将始终保持可用。
您还可以在Artifactory中维护自己安全的、私有的Docker镜像中心,以进一步减少对Docker Hub的依赖。
三、Docker仓库分析
对于由Artifactory支持的JFrog DevOps平台的自主安装,我们提供了一个集成工具,该工具可通过Fluentd数据收集提供统一的JFrog日志数据。我们还提供了其他一些应用程序和集成方式,可以使用这些数据,并呈现到流行的分析程序(包括Splunk、Elastic Stack、Prometheus/Grafana和DataDog等)仪表板上。
通过最适合您的分析工具,您可以查看有价值的运维统计数据,例如数据传输量、哪些仓库正在被谁使用,以及哪些用户被拒绝访问等。
我们更新了这些集成,以提供一个新的Docker统计信息选项卡,可帮助您监视Docker Hub的使用情况。下面就让我们一一介绍一下它们,以及它们在Splunk的JFrog Logs应用程序中的显示方式。
1、拉取请求趋势
单个计数指示最近6个小时对Docker Hub发出的拉取请求的数量,以及趋势是加速还是下降。该计数不包括远程仓库缓存满足的计数(即缓存未命中),因此它仅计算符合Docker Hub限制策略的拉取请求。
2、Docker仓库缓存命中率
缓存满足Docker镜像请求的频率以比率表示,其中值1表示缓存满足所有请求。例如,下面显示的比率0.703是70.3%的缓存命中率。因此,尽管高速缓存未命中总计269次(29.7%),但Artifactory以全传输速度处理了628个拉取请求。
3、Docker Hub拉取请求
该图显示了在6小时滚动时间内发出的Docker Hub拉取请求的数量。每个栏显示从该小时标记开始的前六个小时内发出的拉取请求的总数。
该统计信息将帮助您查看您的企业是否接近或超过了Docker Hub限制策略,以及拉取高峰在什么时间。
4、十大用户和IP
这些统计数据按用户和IP地址揭示了Docker仓库的主要用户是谁。如果您发现超出了拉取请求,则此信息可以帮助您确定主要的负责方。
四、总结
Docker Hub推出了对拉取请求的限速策略,使用Artifactory作为企业级镜像中心可以帮助您绕过这个限制,而JFrog的日志分析可以帮助您分析企业Docker Hub拉取请求的状态。
您可以在Github上找到JFrog日志分析集成的数据收集和分析工具(https://github.com/jfrog/log-...)。
它始于与开源数据收集器Fluentd的集成,该集成可随JFrog Platform部署的每个产品实例一起安装。Fluentd在JFrog平台中为每个产品执行日志输入、字段提取和记录转换,并将此数据的输出标准化为JSON,以传输到分析和BI仪表板。
使用此解决方案,您可以管理从Docker Hub拉取的次数和频率,并减轻新限制策略的影响。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。