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

时间:2021-01-09 09:04:49

标签: macos docker unix jenkins

我是使用 jenkins 和 docker 的新手。目前我遇到了一个错误,我的 jenkinsfile 没有 docker.sock 的权限。有没有办法来解决这个问题?枯竭的想法

我尝试过的事情:

-sudo usermod -aG docker $USER //找不到用户模块

-sudo setfacl --modify user:******:rw /var/run/docker.sock //找不到setfacl

-chmod 777 /var/run/docker.sock //重启后仍然收到这个错误

-chown -R jenkins:jenkins /var/run/docker.sock //更改'/var/run/docker.sock'的所有权:不允许操作

错误图片: enter image description here

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"
    //     }
    // }
}

1 个答案:

答案 0 :(得分:0)

重启系统或docker服务会丢失docker.sock权限。

为了使其持久化,在每次重启后设置一个 cron 来更改所有权

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

并且当您重新启动 docker 时,请确保运行以下命令

chmod 777 /var/run/docker.sock

或者你也可以为它添加一个 cron,它会每 5 分钟执行一次。