如何在Jenkins Pipeline上构建Docker映像,而又不更改基础Jenkins VM的权限?

时间:2018-11-27 06:55:15

标签: docker jenkins jenkins-pipeline

我想使用Jenkins Pipeline构建,推送和部署我的Docker映像。

我明白了:

Got permission denied while trying to connect to the 
Docker daemon socket at unix:///var/run/docker.sock

Other questions on StackOverflow建议sudo usermod -a -G docker jenkins,然后重新启动Jenkins,但是我无权访问运行Jenkins的机器-无论如何,围绕Docker构建的Jenkins Pipeline似乎无法实现运行基本的Docker命令。

如何构建Docker?

pipeline {
    agent  any
    stages {    
         stage('deploy') {
            agent {
                  docker {
                    image 'google/cloud-sdk:latest'
                    args '-v /var/run/docker.sock:/var/run/docker.sock'
                  }
            }
            steps {    
                 script {    
                    docker.build  "gcr.io/myporject/mydockerimage:1"
                } 
             }
          }
    }
}

1 个答案:

答案 0 :(得分:1)

所示的管道定义正在尝试在Docker容器(google / cloud-sdk:latest)中执行docker构建。相反,如果主机上的jenkins用户有权在主机上执行docker命令,则应执行以下操作。

pipeline {
  agent  any
  stages {
    stage('deploy') {
      steps {    
        script {    
          docker.build  "gcr.io/myporject/mydockerimage:1"
        } 
      }
    }
  }
}

jenkins在机器上分别安装和配置时,如果没有适当的许可就无法执行docker命令,这并不奇怪。