Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Jenkins从属节点上运行Dockerfile代理?_Docker_Jenkins - Fatal编程技术网

如何在Jenkins从属节点上运行Dockerfile代理?

如何在Jenkins从属节点上运行Dockerfile代理?,docker,jenkins,Docker,Jenkins,请帮我做下面的事情。 我在一台共享服务器上安装了Jenkins。目前由多个团队使用,因此不允许在那里安装其他软件包/软件。 每个团队都添加了专用的从属节点,并根据需要进行配置。 同样,我们有一个专用节点来运行我们的作业。(这也是我想要运行作业的地方) 我有bitbucket repo,其中有“Jenkinsfile”和“Dockerfile”,我们希望从中创建容器并在其中运行部署步骤 我想先用一些例子来测试一下。所以我有这样的“Dockerfile” #This image is Develop

请帮我做下面的事情。 我在一台共享服务器上安装了Jenkins。目前由多个团队使用,因此不允许在那里安装其他软件包/软件。 每个团队都添加了专用的从属节点,并根据需要进行配置。 同样,我们有一个专用节点来运行我们的作业。(这也是我想要运行作业的地方)

我有bitbucket repo,其中有“Jenkinsfile”和“Dockerfile”,我们希望从中创建容器并在其中运行部署步骤

我想先用一些例子来测试一下。所以我有这样的“Dockerfile

#This image is Developed from ubuntu:18.04-Dockerhub
FROM ubuntu:18.04

#Updating System Packages and installing required packages
RUN apt-get update && \
    apt-get install -y openssh-server wget git curl zip unzip && \
    apt-get clean

#Installing rsync
RUN apt-get install -y rsync 
我有下面这样的“Jenkinsfile

pipeline {
    agent { node { label 'slave_node' } }
    stages {
        stage('Test') {
            agent {
                dockerfile true
            }
            steps {
                sh 'cat /etc/os-release'
                sh 'curl --version'
                sh 'echo Successfully compiled'
            }
        }
    }
} 
当我执行这个管道作业时

  • 它得到詹金斯档案
  • 在提到的从属节点上正确启动
  • 检查回购代码
  • 分期付款
  • 但当它进入stage(‘Test’)时,节点会变回“Master Jenkins”,并再次开始检查repo代码。[这就是我的问题所在。我不知道为什么要切换]
  • 分期付款
  • 运行“Docker文件”
  • 尝试从中心提取图像。但由于“Docker command not found”(主节点没有设置,预期会出现错误),作业失败
问题是:为什么要将作业从从属节点切换到主节点? 请帮忙,谢谢


如果我在我的个人笔记本电脑上运行此程序,它会工作得非常好。

我会在Jenkins中查看您的Docker设置。可能是您已将主节点定义为默认Jenkins代理,因此当您仅使用“dockerfile:true”运行时,它会尝试在主节点上运行构建

通过在此文档中搜索“指定Docker标签”,可以找到对此特定选项的引用


我会在Jenkins中查看您的Docker设置。可能是您已将主节点定义为默认Jenkins代理,因此当您仅使用“dockerfile:true”运行时,它会尝试在主节点上运行构建

通过在此文档中搜索“指定Docker标签”,可以找到对此特定选项的引用

指的是 我能够使用脚本化的管道来实现我的需求。所以在这里发布答案

但我仍然不知道声明性管道有什么问题

node ('slave_node') {
    checkout scm
    def customImage = docker.build("custom-image-name")
    customImage.inside {
        sh 'Inside Container'
        sh 'cat /etc/os-release'
        sh 'curl --version'
        sh 'echo Successfully compiled'
    }
}
谢谢

提及 我能够使用脚本化的管道来实现我的需求。所以在这里发布答案

但我仍然不知道声明性管道有什么问题

node ('slave_node') {
    checkout scm
    def customImage = docker.build("custom-image-name")
    customImage.inside {
        sh 'Inside Container'
        sh 'cat /etc/os-release'
        sh 'curl --version'
        sh 'echo Successfully compiled'
    }
}

感谢

Hi@Ramzi,我之前也这么做了。我们有3到4个从节点,配置为“尽可能多地使用”选项。最初,切换通常发生在这4个从节点的任何其他节点上。因此,我们将所有节点更新为“仅在指定时使用”选项。在那之后,它开始切换回主。这就是我现在卡住的地方,不知道为什么。我检查了你提到的设置。它没有在任何地方定义。如果该选项不存在,那么你没有安装docker管道。我会检查并确保它是。Hi@Ramzi,我之前也这么做了。我们有3到4个从n配置为“尽可能多地使用”选项的ODE。最初,切换通常与这4个从属节点一起发生。因此,我们将所有节点更新为“仅在指定时使用”选项。在此之后,它开始切换回主。这就是我现在卡住的地方,不知道为什么。我检查了您提到的设置。它没有在任何地方定义。如果该选项不存在,则您没有安装docker管道。我将检查并确保它是。