kag*_*ag0 12 performance continuous-integration caching travis-ci docker
是否可以在Travis CI上缓存泊坞窗图像?尝试使用travis.yml中的cache.directories 缓存/var/lib/docker/aufs/diff文件夹和/var/lib/docker/repositories-aufs文件似乎不起作用,因为它们需要root.
Mat*_*att 13
从Docker的角度来看,我认为你可以做到这一点的最佳方式(没有运行网络本地注册表的可能性)是saveDocker镜像并缓存导出的tar球.你需要load在开始时而不是pull图像.这样你就不会搞乱docker存储实现.
install:
- docker pull busybox
- docker save busybox | gzip > docker/busybox.tar.gz
cache:
  directories:
  - docker
然后,load在Travis运行之前,您需要缓存的图像.
before_script:
- gzip -dc docker/busybox.tar.gz | docker load
对于特拉维斯来说,我不清楚的一点是,如果你需要install在第一次之后阻止它运行该步骤.一旦缓存,您不希望Travis每次都拉动并导出图像.我不确定该cache指令是否会自动为您执行此操作?
那么主要的问题是,这实际上是否比拉动图像更快:
缓存会对配置中列出的所有目录进行分析,并使用安全且受保护的URL将其上载到S3,从而确保上载的归档的安全性和隐私性.
请注意,这使得我们的缓存不是网络本地的,它仍然绑定到S3的网络带宽和DNS解析.这会影响您可以存储在缓存中的内容.如果您在缓存中存储大于几百兆的存档,则您不太可能看到速度大幅提升.
你可能只是在增加开销.由于Docker注册表由Cloudfront支持,因此Travis已经从本地或至少关闭的亚马逊基础架构中提取压缩图像.也许要求他们提供本机缓存Docker镜像的功能,类似于他们对apt包的做法,尽管听起来并不乐观.