【问题标题】:Jenkins + Docker + Windows詹金斯 + 码头工人 + Windows
【发布时间】:2018-07-01 03:43:16
【问题描述】:

我目前在带有 Linux 容器的 Windows 10 上运行 Jenkins 2.89.3Docker 17.12.0-ce-win47

我正在尝试运行以下 Jenkins 文件

pipeline {
    agent { docker 'maven:3.3.3' }
    stages {
        stage('build') {
            steps {
                sh 'mvn --version'
            }
        }
    }
}

但是,我在 Jenkins 中遇到以下错误:

java.io.IOException: Failed to run image 'maven:3.3.3'. Error: docker:
Error response from daemon: the working directory
'C:\Users\c.c\.jenkins\workspace\Neo4jTime_master-R4QSBCTASBURK2MQKHAPXGLIBNT65CJORPZCYLPCGRG75IGOQKTA'
is invalid, it needs to be an absolute path.

我该怎么办?

【问题讨论】:

  • Docker 插件使用 '-v' 参数自动将工作区文件夹挂载到容器中(您可以在构建日志中看到这一点)。这可能是错误的原因
  • 是的,你是对的。不过,我有什么办法可以完成这项工作吗?
  • 不要在 Windows 上运行 jenkins master。你最好将它作为 Windows 上的 Docker 容器运行
  • 目前,Windows 主机上的 Jenkins Docker Pipeline 插件由于 bug issues.jenkins.io/browse/JENKINS-60473而无法执行 Linux Docker 镜像

标签: docker jenkins docker-for-windows docker-desktop


【解决方案1】:

我在尝试在 Windows 上安装 Jenkins 时遇到了类似的问题。示例解决方案在 Docker 中运行 Jenkins with Docker inside

我准备了小自述文件,如何在 Docker 中设置 Jenkins,里面有 Docker 和一个示例 Jenkinsfile https://github.com/auriuki/jenkins-docker

简而言之:在 Docker 中运行 Jenkins,就像在 Jenkins 官方文档中一样。

docker run ^
  -u root ^
  --rm ^
  -d ^
  -p 8080:8080 ^
  -p 50000:50000 ^
  -v "E:/Docker/Jenkins":/var/jenkins_home ^
  -v /var/run/docker.sock:/var/run/docker.sock ^
  --name jenkins ^
  jenkinsci/blueocean

E:/Docker/Jenkins 是为 jenkins 配置、工作规范等创建的目录 - 以避免在容器被移除后丢失数据。

【讨论】:

  • 好点。我不想复制粘贴整个指令,但你是对的。今后我会牢记在心。我添加了通用解决方案-如何在docker中运行。
  • 太棒了!非常感谢分享这个。
【解决方案2】:

这只有在 Jenkins 安装在 Linux 机器上时才有效。 这是因为 Docker 插件将工作空间挂载到容器中(使用 -v 参数)并且 Linux 中不存在 Windows 路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 2019-03-17
    • 2020-09-29
    • 2023-04-01
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多