我是使用 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'的所有权:不允许操作
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"
// }
// }
}
答案 0 :(得分:0)
重启系统或docker服务会丢失docker.sock权限。
为了使其持久化,在每次重启后设置一个 cron 来更改所有权
@reboot chmod 777 /var/run/docker.sock
并且当您重新启动 docker 时,请确保运行以下命令
chmod 777 /var/run/docker.sock
或者你也可以为它添加一个 cron,它会每 5 分钟执行一次。