首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins总是从声明性管道代理定义中提取docker映像。

Jenkins总是从声明性管道代理定义中提取docker映像。
EN

Stack Overflow用户
提问于 2017-09-20 16:28:41
回答 3查看 10.7K关注 0票数 5

我使用agent {any}定义了一个工作的Jenkins管道。

但我想试着在码头图像上做测试。根据文档,我可以这样做:

代码语言:javascript
复制
pipeline {
     agent {
         docker { image 'centos/python-27-centos7:latest' }
     }
     stages {
        ...
     }
}

问题是,我的Jenkins实例是脱机的,使用此配置,它将在运行项目时尝试docker pull映像。

但是,我已经将centos/python-27映像加载到了对接程序中(使用docker images可以看到,并且可以使用docker run -i -t centos/python-27-centos7 /bin/bash运行)。

我是否可以在Jenkins中配置代理,这样它就不会尝试pull来自Docker的映像?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-10 12:39:02

Docker代理有一个alwaysPull标志,可以设置为falsetrue

代码语言:javascript
复制
agent {
  docker {
    alwaysPull false
    image 'foo/bar'
  }
}

Jenkins有一个管道语法生成器,可以在这些情况下提供帮助。在左侧的“作业”菜单中,有一个“管道语法”的图标。

在这里,您可以看到一些设置,以帮助您生成管道指令。

票数 15
EN

Stack Overflow用户

发布于 2017-09-20 22:05:24

您可以尝试使用dockerfile代理。如果构建图像所需的所有内容都是本地的,那么您就不必在线。

代码语言:javascript
复制
pipeline {
 agent {
   dockerfile {
     filename "someOtherDockerfile"
     label "docker-nodes"
     args "-v /tmp:/tmp"
   }
 }
 stages {
    ...
 }

您的另一个选项可能是设置一个专用的码头注册中心。https://docs.docker.com/registry/deploying/

票数 1
EN

Stack Overflow用户

发布于 2017-09-20 17:15:38

您应该使用兄弟级,而不是嵌套的容器映像。例如,尝试通过-v /var/run/docker.sock:/var/run/docker.sock将docker守护进程套接字的卷挂载到Jenkins容器。这样,您就可以访问主机系统上可用的映像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46327298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档