gitlab-runner使用docker执行器,无法获取本地镜像。

     使用gitlab-ci进行持续集成的时候,要注册一个gitlab-runner,注册gitlab-runner又要指定一个执行器。执行器有那么几种:

1


这其中,比较简单常用的就是shell执行器,往上有很多资料,这里不再重复。而docker执行器是一个相对用的比较少的执行器,因为docker执行器要和docker配合使用,因此用的人比较少吧。

现象:

   仿造官方文档上的写法,在.gitlab.yml文件中指定一个镜像文件,用以编译和运行我们的项目,如图:

2

这个写法的本意是想使用本地的镜像,mytomcat:v1

3

作为编译和运行我们的项目的镜像。但是这个时候进行持续集成的话会报一个错:

4

当pipeline开始的时候,gitlab-runner没有用本地已经存在的mytomcat:v1这个镜像,而是直接去docker中央仓库pull这个镜像,这自然是找不到的,所以就报错了。这是为什么呢?

解释及解决方法

1.解释

        这是docker执行器的pull policy导致的,这个pull policy的文档在官方文档上排的比较靠后,甚至有点不起眼,这一点是很坑的,明明是跟着官方文档做,但是却是错了,还错得莫名其妙的。

5

可以点进去看一下:

6

这就很明显了,如果你想要指定本地镜像的话,那就要制定pull policy,否则默认设置pull_policy="always",意味着gitlab-runner每次都要去docker中央仓库拉image关键字指明的镜像,这也就是这个问题的解释了。

2.解决方法

制定pull policy,再重启gitlab-runner就好了。如图:

6

3.结果

7

pull policy生效,使用的是本地的镜像。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 持续集成概念 在我们编写好了源代码之后,我们需要编译,打包,发布到服务器,我们的软件才可以使用。持续集成就是指的这...
    yangblink阅读 13,284评论 6 9
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,595评论 15 147
  • 原文在此 获取镜像 之前提到过,Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜...
    若与阅读 1,883评论 1 5
  • 我们都在片面的指责张妈妈的过度保护,却忘记了作为一个单亲妈妈釜底抽薪的痛苦。也许,也许,只有我们坐到那个位置上,才...
    罗雯丽阅读 645评论 0 0