首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins声明性管道将不能与Docker Swarm一起工作

Jenkins声明性管道将不能与Docker Swarm一起工作
EN

Stack Overflow用户
提问于 2017-10-17 06:30:37
回答 1查看 1.4K关注 0票数 0

运行这个简单的管道:

代码语言:javascript
复制
pipeline {
    agent { label 'docker-swarm' }
    /* ------------------- */
    stages {
        stage("Build") {
            agent {
                docker {
                  reuseNode true
                  image 'maven:3.5.0-jdk-8'
                }
            }
            steps {
                sh 'mvn -version'
            }
        }
    }
}

产生此错误:

Queued: All nodes of label ‘docker-swarm’ are offline

~1分钟后,错误消息更改为:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

奇怪的是,当我在Manage Jenkins → Cloud中测试连接时,它可以毫无问题地连接:

有人想办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-16 04:48:20

Update 11/27/2017:屏幕截图显示了不正确的配置,它不使用群集,而是使用单个管理器节点。为了使用群集,我切换到端口3376,测试连接输出更改为Version = swarm/1.2.8, API Version = 1.22。我注意到了自己的错误,因为我从来没有看到构建运行在群中的其他节点上,而群管理器则不知所措。

在最初的问题中,尚不清楚使用的是哪些版本的Jenkins插件,也不清楚如何配置群集。

我成功地使用了:

  • Jenkins 2.73.3
  • Docker插件1.0.4
  • 独立(又称经典)码头群

在我编写这篇文章时,码头插件不支持较新的DockerS蜡模式。虽然非群体对接引擎应该能工作。

配置如下:

凭据提供连接到群集所需的证书。我记得我花了几次努力才把这件事做好。

下列管道起作用:

代码语言:javascript
复制
pipeline {
    agent {
        docker 'maven:3.5.0-jdk-8'
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn -version'
            }
        }
    }
}

提供产出:

代码语言:javascript
复制
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.4.93-boot2docker", arch: "amd64", family: "unix"

原问题中与管道的主要区别是:

  • 在图像中使用单个管道作用域的agent
  • 不使用reuseNode
  • 不使用label

我没有亲自尝试过reuseNodelabel

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

https://stackoverflow.com/questions/46783819

复制
相关文章

相似问题

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