我想在jenkinsfile中运行Docker命令,但遇到了错误

我想在jenkinsfile中运行Docker命令,但遇到了错误,docker,jenkins,jenkins-pipeline,Docker,Jenkins,Jenkins Pipeline,我在jenkinsfile中有三个阶段 皮棉锉 变量设置 构建docker映像。 当我在第2阶段之前运行sh“docker build--tag=hello.”时,该命令会生成docker映像,但当我在第2阶段之后运行该命令时,Jenkins管道不会构建docker映像,并将返回一个错误,该过程显然从未在/var/lib/Jenkins/workspace中启动过/hello@tmp/耐用-b5fe7826约5分钟后 我附上了截图 在第2阶段之前运行docker build时生成的图像的屏幕截图

我在jenkinsfile中有三个阶段

  • 皮棉锉
  • 变量设置
  • 构建docker映像。
    当我在第2阶段之前运行
    sh“docker build--tag=hello.”
    时,该命令会生成docker映像,但当我在第2阶段之后运行该命令时,Jenkins管道不会构建docker映像,并将返回一个错误
    ,该过程显然从未在/var/lib/Jenkins/workspace中启动过/hello@tmp/耐用-b5fe7826
    约5分钟后
  • 我附上了截图

    在第2阶段之前运行docker build时生成的图像的屏幕截图

    当我在第2阶段之后运行docker build时,图像的屏幕截图失败

    这是我的文件:

    pipeline {
         agent any
         stages {
              stage("Lint files") {
                   steps {
                        echo "Linting HTML file..."
                        sh "tidy -q -e index.html"
                        echo "Linting Dockerfile..."
                        sh "hadolint Dockerfile"
                        sh "docker build --tag=hello1 ."
                   }
              }
              stage("Variables setup") {
                   steps {
                        script {
                             echo "Setting up variables for the build"
                             env.tag = readFile("./variables/tag.txt").trim()
                             env.name = readFile("./variables/name.txt").trim()
                             env.path = readFile("./variables/path.txt").trim()
                             name="${env.name}"
                             tag="${env.tag}"
                             path="${env.path}"
                             lo="name"
                        }
                   }
              }
              stage("Docker image build") {
                   steps {
                        echo "Hello Docker"
                        sh "docker build --tag=hello2 ."
                        echo "Hello $name"
                   }
              }
         }
    }
    
    这是Docker文件代码

    # hadolint ignore=DL3007
    FROM nginx:latest
    
    # Copy source code to working directory
    COPY index.html /usr/share/nginx/html
    
    # Expose port 80
    EXPOSE 80
    
    我试过把单引号改成双引号,但没有成功。 我怎样才能解决这个问题


    PS:我正在AWS EC2实例上运行Jenkins

    你有问题吗?我做了一个快速的搜索,它似乎是一个错误的。你能确认你在Jenkins master上使用的插件是哪个版本吗?@proxxz我读到了相关信息,并将插件更新为1.35版本,但它没有消失。我意识到jenkins在第二阶段后将工作目录更改为tmp文件夹,但找不到阻止jenkins将工作目录更改为tmp文件夹的方法。您能否也包括您的Dockerfile,以便我重现该问题/var/lib/jenkins看起来确实有点奇怪,但我不确定您是如何安装jenkins的,您使用的是哪个版本,或者您使用的是什么操作系统。请让我们帮忙。我已经编辑了这篇文章,把Dockerfile包括在内。/var/lib/jenkins是jenkins安装的默认路径,因为我没有更改安装。我使用终端在ubuntu 18.04中安装了jenkins。你有问题吗?我做了一个快速的搜索,它似乎是一个错误的。你能确认你在Jenkins master上使用的插件是哪个版本吗?@proxxz我读到了相关信息,并将插件更新为1.35版本,但它没有消失。我意识到jenkins在第二阶段后将工作目录更改为tmp文件夹,但找不到阻止jenkins将工作目录更改为tmp文件夹的方法。您能否也包括您的Dockerfile,以便我重现该问题/var/lib/jenkins看起来确实有点奇怪,但我不确定您是如何安装jenkins的,您使用的是哪个版本,或者您使用的是什么操作系统。请让我们帮忙。我已经编辑了这篇文章,把Dockerfile包括在内。/var/lib/jenkins是jenkins安装的默认路径,因为我没有更改安装。我使用终端在Ubuntu18.04中安装了jenkins。