首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins管道高山代理"apk更新错误:无法锁定数据库:权限被拒绝“

Jenkins管道高山代理"apk更新错误:无法锁定数据库:权限被拒绝“
EN

Stack Overflow用户
提问于 2020-06-12 01:42:49
回答 2查看 959关注 0票数 1

我使用高山docker镜像作为Jenkins管道代理,但在运行apk updateapk add package时不断收到权限被拒绝的错误。我在运行apt updateapt install时也看到了类似的Ubuntu镜像错误

这是我的Jenkinsfile:

代码语言:javascript
复制
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的输出:

代码语言:javascript
复制
+ 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

有人能帮我弄清楚这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-12 01:49:59

请修改Jenkins管道中的docker标签,如下所示:

代码语言:javascript
复制
docker { 
image 'alpine:3.12.0' 
args '-u root:root'
 } 
票数 1
EN

Stack Overflow用户

发布于 2020-06-12 02:05:08

我认为问题在于Jenkins使用非根用户运行容器,因此出现了Permission denied错误。

尝试更改您的管道,如下所示:

代码语言:javascript
复制
agent {
    docker {
            image 'alpine:3.12.0'
            args '-u root'
        }
    }

参见this answer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62330354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档