如何将从Docker集线器提取的图像缓存到私有Docker注册表中?

时间:2018-12-18 02:16:27

标签: docker gitlab gitlab-ci dockerhub

我的.gitab-ci.yml的第一行如下:

image: gradle:5.0-jdk11

此图像为601mb,每次执行构建时,我总是不得不将其从docker hub中拉出。

是否可以通过任何方式将图像存储在Gitlab中项目的docker存储库中?以便在第一次运行构建时将其自动放置在该位置,然后在随后的构建调用中从那里检索?

2 个答案:

答案 0 :(得分:0)

应该在页面“ Cache dependencies in GitLab CI/CD ”中进行描述,将图像声明为缓存中的伪像(由cache:paths定义)

  

有时会造成混淆,因为名称伪像听起来像是只在工作之外有用的东西,例如下载最终图像。
  但是在管道的各个阶段之间也可以使用工件。
  因此,如果您通过下载所有必需的模块来构建应用程序,则可能需要将它们声明为工件,以便每个后续阶段都可以依赖它们在其中

还要检查您的Docker runner cache directory includes

如果问题仍然存在,请尝试使用私有注册表,如issue 41924

image: my-private-registry:5000/my-ci-image:latest

答案 1 :(得分:0)

如果您的Gitlab运行器已经提取了Docker映像,则下次需要它时,它将提取本地映像,而不是再次下载601mB映像。这是默认行为,除非您按https://docs.gitlab.com/runner/executors/docker.html#how-pull-policies-work

中的说明进行更改

请记住,如果该图像已从gitlab-runner本地图像中删除,则必须从头开始。