zoukankan      html  css  js  c++  java
  • gitlan-runner中的executor,docekr使用本地镜像,不从dockerhub拉取镜像

    有文章使用gitlab-runner往k8s上发送curl命令实现pod中容器使用的镜像版本更新,地址:https://www.cnblogs.com/sanduzxcvbnm/p/14680979.html可知,中间有一步需要往dockerhub仓库推送镜像,executor执行器docker拉取镜像。
    那么能不能改成从本地或者从私有仓库拉取镜像呢,这个是可以的。

    在将GitLab Runner注册到GitLab page上,让GitLab page可以和你的Runner通信时,有一步是填写使用的executor

    输入Runner的executor:
    Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
    

    如果你选择Docker作为Runner的executor,你还要选择默认的docker image来运行job(当然,你也可以在.gitlab-ci.yml里指明你需要用的image),这句话就跟文章使用gitlab-runner往k8s上发送curl命令实现pod中容器使用的镜像版本更新,地址:https://www.cnblogs.com/sanduzxcvbnm/p/14680979.html 开头讲述的那样,不过.gitlab-ci.yml里指明的image优先级高。

    注册完成后你可以在/etc/gitlab-runner里发现 config.toml文件,该文件是Runner的配置文件

    接下来就牵涉到一个重要的话题 —— Executor

    1. Shell Executor
      以宿主机作为Runner的所有jobs的执行器。Runner将会从远程仓库pull你的工程,工程的目录为:/builds。如果你使用了cache,那么cache将会存在/cache/。
      但是,它需要将构建所需的所有依赖手动安装到安装了Runner的同一台计算机上,比如使用到的git,jdk,maven,docekr等

    2. Docker Executor
      所有jobs的执行环境为指定的docker image所生成的container,每个job都会生成一个container并且在job结束后立即销毁。这个说的就是config.toml文件和.gitlab-ci.yml中指定的image
      Docker executor默认将所有的builds存储在/builds/(这里的路径是container里的路径,Runner配置文件config.toml里的build_dir字段可以重新指明build的目录,默认对应于宿主机的目录是在宿主机的docker volume下:/var/lib/docker/volumes//_data/),默认将所有的caches存储在container里的/cache目录(config.toml里的cache_dir字段可以重新指明cache的目录),注意build_dir和cache_dir指向的均是container里的目录,要想将container里的数据持久化,需要用到volumes字段,这个字段的使用和docker volume的使用是类似的,只需在config.toml的[runner.docker]部分添加volumes = ["/cache", ":rw"]即可实现container里/cache目录数据的永久保存以及将host目录挂载到相应的container目录并具有读写的功能。
      比如:

    # 仅作展示,未显示完整
    [runners.docker]
      image = "jdd.io/jre:1.8.275"
      volumes = ["/cache","/run/docker.sock:/run/docker.sock"]
    

    当你使用docker 或 docker+machine executors时,你可以通过设置pull_policy来决定Runner如何pull docker image。pull_policy有三种值:

    always —— Runner始终从远程pull docker image。
    if-not-present —— Runner会首先检查本地是否有该image,如果有则用本地的,如果没有则从远程拉取。
    never —— Runner始终使用本地的image。
    

    注意:这一步就是本文开头提到的,使用本地镜像,不用再从dockerhub上拉取了

    # 仅作展示,未显示完整
    [runners.docker]
      image = "jdd.io/jre:1.8.275"
      pull_policy="if-not-present" # 添加这个选项就可以了
      volumes = ["/cache","/run/docker.sock:/run/docker.sock"]
    

    当你使用docker, docker+machine 或 kubernetes作为executor时,GitLab Runner将会使用特定的container来处理Git、artifacts 和cache 操作。通过在宿主机中键入以下命令:docker images
    你会发现一些特殊的images,如:gitlab/gitlab-runner-helper:6_64-54944146

    当然,也可以通过配置config.toml里的helper_image字段来让Runner使用你自己定制化的helper image。

  • 相关阅读:
    在web.config 的config
    有道理
    showModalDialog和showModelessDialog使用心得
    VBScript的 trim()
    RetroGuard的使用方法(转)
    NHibernate 的语句的问题
    Web控件TreeView展开无闪烁的两个解决方法
    如何在类库项目中添加Web窗体文件
    签名活动链接
    __EVENTTARGET为空或不是对象
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14681419.html
Copyright © 2011-2022 走看看