首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker管道的“内部”无法在Docker容器内运行的Jenkins奴隶中工作

Docker管道的“内部”无法在Docker容器内运行的Jenkins奴隶中工作
EN

Stack Overflow用户
提问于 2017-09-14 12:13:54
回答 1查看 4.3K关注 0票数 4

我在让Jenkins管道脚本工作时遇到问题,该脚本使用Docker管道插件在Docker容器中运行部分构建。Jenkins服务器和从服务器都在Docker容器中运行。

设置

  • 在Docker容器中运行的Jenkins服务器
  • 基于自定义映像(https://github.com/simulogics/protokube-jenkins-slave)的Jenkins从站也运行在Docker容器中
  • 基于docker:1.12-dind映像的码头守护进程容器
  • 奴隶是这样启动的:docker run --link=docker-daemon:docker --link=jenkins:master -d --name protokube-jenkins-slave -e EXTRA_PARAMS="-username xxx -password xxx -labels docker" simulogics/protokube-jenkins-slave

基本的Docker操作(拉、建和推映像)在这个设置下工作得很好。

(非)目标

  • 我不想让服务器知道Docker的事。这应该是从节点的一个特征。
  • 我不需要动态分配奴隶或短暂的奴隶。手动启动一个奴隶对我来说已经足够了。
  • 理想情况下,我希望从我的自定义Docker图像中移开,而在一个通用Docker从服务器中使用Docker管道插件提供的inside函数。

问题

这是一个具有代表性的构建步骤,它导致了这个问题:

代码语言:javascript
复制
image.inside {
    stage ('Install Ruby Dependencies') {
        sh "bundle install"
    }
}

这将导致日志中出现这样的错误:

sh: 1:无法创建不存在的/workspace/repo_branch-K5EM5XEVEIPSV2SZZUR337V7FG4BZXHD4VORYFYISRWIO3N6U67Q@tmp/durable-98bb4c3d/pid:目录

在此之前,此警告将显示:

71f4de289962-5790bfcc似乎在容器71f4de28996233340c2aed4212248f1e73281f1cd7282a54a36ceeac8c65ec0a中运行,但在[]中找不到/workspace/repo_branch-K5EM5XEVEIPSV2SZZUR337V7FG4BZXHD4VORYFYISRWIO3N6U67Q。

有趣的是,这个问题正是在CloudBees文档中为https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/index.html#docker-workflow-sect-inside插件描述的。

要在内部工作,Docker服务器和Jenkins代理必须使用相同的文件系统,这样才能挂载工作区。确保这一点的最简单方法是让Docker服务器在本地主机(与代理相同的计算机)上运行。目前,Jenkins插件和Docker CLI都不会自动检测服务器远程运行的情况;典型的症状是嵌套sh命令中的错误,例如 无法创建/…@tmp/耐久-…/pid:目录不存在或不存在退出代码。 当Jenkins能够检测到代理本身正在Docker容器中运行时,它将自动将-卷-从参数传递到内部容器,确保它能够与代理共享一个工作区。

不幸的是,最后一段中描述的检测似乎不起作用。

问题

既然我的服务器和从服务器都运行在Docker容器中,那么我需要使用什么子卷映射来使其工作呢?

EN

回答 1

Stack Overflow用户

发布于 2017-09-14 12:45:44

我已经看到了这个问题的变体,agents也是由kubernetes-plugin驱动的。

我认为,要使agent/jnlp容器正常工作,需要与build容器共享工作区。

通过build容器,我指的是将运行bundle install命令的容器。

这可能是通过withArgs进行的。

问题是你为什么要这么做?无论如何,大多数管道步骤都是在主程序上执行的,实际构建将在build容器中运行。同时使用agent的目的是什么?

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

https://stackoverflow.com/questions/46218838

复制
相关文章

相似问题

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