Jenkins pipeline alpine agent "apk update ERROR: Unable to lock database: Permission denied"

问题描述 投票:0回答:2

我使用Alpine docker镜像作为Jenkins管道代理,但我一直得到权限拒绝的错误,当运行 apk updateapk add package. 我在运行Ubuntu图像时也看到类似的错误。apt updateapt install

这是我的Jenkins文件。

pipeline {
    agent none
    stages {
        stage('Initialization') {
            agent any
            steps {
                checkout scm
            }
        }

        stage('Git Clone') {
            agent { docker { image 'alpine:3.12.0' } }
            steps {
                sh '''
                    apk update;
                    apk add --no-cache git;
                    apk add --no-cache openssh;
                    git -v;
                '''
            }
        }
    }
}

这是Jenkins的输出。

+ docker inspect -f . alpine:3.12.0
WARNING: Error loading config file: /root/.docker/config.json: stat /root/.docker/config.json: permission denied
.
[Pipeline] withDockerContainer
Jenkins does not seem to be running inside a container
$ docker run -t -d -u 1001:0 -w "/opt/bitnami/jenkins/jenkins_home/workspace/Deploy Glosfy Frontend" -v "/opt/bitnami/jenkins/jenkins_home/workspace/Deploy Glosfy Frontend:/opt/bitnami/jenkins/jenkins_home/workspace/Deploy Glosfy Frontend:rw,z" -v "/opt/bitnami/jenkins/jenkins_home/workspace/Deploy Glosfy Frontend@tmp:/opt/bitnami/jenkins/jenkins_home/workspace/Deploy Glosfy Frontend@tmp:rw,z" -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** alpine:3.12.0 cat
$ docker top 166c9ace17a4eb6aef0af0bbc04902ee4a358212be7f029550fb39a921e305aa -eo pid,comm
[Pipeline] {
[Pipeline] sh
+ apk update
ERROR: Unable to lock database: Permission denied
ERROR: Failed to open apk database: Permission denied
[Pipeline] }
$ docker stop --time=1 166c9ace17a4eb6aef0af0bbc04902ee4a358212be7f029550fb39a921e305aa
$ docker rm -f 166c9ace17a4eb6aef0af0bbc04902ee4a358212be7f029550fb39a921e305aa
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline
ERROR: script returned exit code 99
Finished: FAILURE

谁能帮我找出问题所在?

docker jenkins pipeline alpine
2个回答
1
投票

请像这样修改Jenkins pipeline的docker标签。

docker { 
image 'alpine:3.12.0' 
args '-u root:root'
 } 

1
投票

我相信问题是Jenkins用非root用户运行容器,因此出现了 Permission denied 错误。

试着改变你的管道,像这样。

agent {
    docker {
            image 'alpine:3.12.0'
            args '-u root'
        }
    }

请看 本回答.

© www.soinside.com 2019 - 2024. All rights reserved.