简体   繁体   中英

Jenkins/ MacOS - dial unix /var/run/docker.sock: connect:permission denied

i am new to using jenkins and docker. Currently I ran into an error where my jenkinsfile doesnt have permission to docker.sock. Is there a way to fix this? Dried out of ideas

things i've tried:

- sudo usermod -aG docker $USER //usermod not found

- sudo setfacl --modify user:******:rw /var/run/docker.sock //setfacl not found

- chmod 777 /var/run/docker.sock //still receiving this error after reboot

- chown -R jenkins:jenkins /var/run/docker.sock //changing ownership of '/var/run/docker.sock': Operation not permitted

error image: 在此处输入图像描述

def gv

pipeline {
    agent any
    environment {
        CI = 'true'
        VERSION = "$BUILD_NUMBER"
        PROJECT = "foodcore"
        IMAGE = "$PROJECT:$VERSION"
    }
    tools {
        nodejs "node"
        'org.jenkinsci.plugins.docker.commons.tools.DockerTool' 'docker'
    }
    parameters {
        choice(name: 'VERSION', choices: ['1.1.0', '1.2.0', '1.3.0'], description: '')
        booleanParam(name: 'executeTests', defaultValue: true, description: '')
    }
    stages {
        stage("init") {
            steps {
                script {
                   gv = load "script.groovy"
                   CODE_CHANGES = gv.getGitChanges()
                }
            }
        }
        stage("build frontend") {
            steps {
                dir("client") {
                    sh 'npm install'
                    echo 'building client'
                }
            }
        }
        stage("build backend") {
            steps {
                dir("server") {
                    sh 'npm install'
                    echo 'building server...'
                }
            }
        }
        stage("build docker image") {
            steps {
                sh 'docker build -t $IMAGE .'
            }
        }
        // stage("deploy") {
        //     steps {
        //         script {
        //             docker.withRegistry(ECURL, ECRCRED) {
        //                 docker.image(IMAGE).push()
        //             }
        //         }
        //     }
        // }
    }
    // post {
    //     always {
    //         sh "docker rmi $IMAGE | true"
    //     }
    // }
}

docker.sock permissions will be lost if you restart system or docker service.

To make it persistence setup a cron to change ownership after each reboot

@reboot chmod 777 /var/run/docker.sock

and When you restart the docker, make sure to run the below command

chmod 777 /var/run/docker.sock

Or you can put a cron for it also, which will execute in each every 5 minutes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM