Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 詹金斯管道阿尔卑斯代理公司“;apk更新错误:无法锁定数据库:权限被拒绝;_Docker_Jenkins_Jenkins Pipeline_Alpine - Fatal编程技术网

Docker 詹金斯管道阿尔卑斯代理公司“;apk更新错误:无法锁定数据库:权限被拒绝;

Docker 詹金斯管道阿尔卑斯代理公司“;apk更新错误:无法锁定数据库:权限被拒绝;,docker,jenkins,jenkins-pipeline,alpine,Docker,Jenkins,Jenkins Pipeline,Alpine,我正在使用Alpine docker image作为Jenkins管道代理,但在运行apk update或apk add package时,我不断收到权限拒绝错误。在运行apt update或apt install 这是我的詹金斯档案: 管道{ 一号特工 舞台{ 阶段('初始化'){ 任何代理人 台阶{ 校验scm } } 阶段('Git克隆'){ 代理{docker{image'alpine:3.12.0'} 台阶{ “嘘” apk更新; apk add——无缓存git; apk add——无

我正在使用Alpine docker image作为Jenkins管道代理,但在运行
apk update
apk add package
时,我不断收到权限拒绝错误。在运行
apt update
apt install

这是我的詹金斯档案:

管道{
一号特工
舞台{
阶段('初始化'){
任何代理人
台阶{
校验scm
}
}
阶段('Git克隆'){
代理{docker{image'alpine:3.12.0'}
台阶{
“嘘”
apk更新;
apk add——无缓存git;
apk add——无缓存openssh;
git-v;
'''
}
}
}
}
这是詹金斯的输出:

+码头工人检查-f。阿尔卑斯山:3.12.0
警告:加载配置文件时出错:/root/.docker/config.json:stat/root/.docker/config.json:权限被拒绝
.
[管道]带DockerContainer
詹金斯似乎不是在集装箱里跑
$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:rw,z”-v“/opt/bitnami/jenkins/jenkins_home/workspace/Deploy GlosfyFrontend@tmp:/opt/bitnami/jenkins/jenkins_home/workspace/Deploy GlosfyFrontend@tmp:rw,z"*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************-e*********-e*********-e*********-e*********-e*********-e*********-e*********-e*********-e*********-e*********-e*********-e******-e******-e***-e******-e******-e***-阿尔卑斯山:3.12.0猫
$docker top 166c9ace17a4eb6aef0af0bbc04902ee4a358212be7f029550fb39a921e305aa-工程指令pid,通信
[管道]{
[管道]上海
+apk更新
错误:无法锁定数据库:权限被拒绝
错误:无法打开apk数据库:权限被拒绝
[管道]}
$docker stop——时间=1 166c9ace17a4eb6aef0af0bbc04902ee4a358212be7f029550fb39a921e305aa
$docker rm-f 166c9ace17a4eb6aef0af0bbc04902ee4a358212be7f029550fb39a921e305aa
[管道]//withDockerContainer
[管道]}
[Pipeline]//withEnv
[管道]}
[管道]//节点
[管道]}
[管道]//阶段
[管道]管道末端
错误:脚本返回退出代码99
完成:失败

有人能帮我解决这个问题吗?

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

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

我认为问题在于Jenkins正在使用非root用户运行容器,因此出现了
权限被拒绝
错误

尝试这样更改管道:

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

请参阅。

Jenkins在VPS中独立运行,而不是在容器中运行。只是代理是docker容器。卷权限仍然重要吗?尝试从Jenkins Pipeline:docker{image'alpine:3.12.0'args'-u root:root'}将此添加到docker标记中。添加args以将用户更改为root非常有用,谢谢。我不知道我们可以像这样在管道中传递ARG。再次感谢。如果你更新评论中的细节,我可以接受答案。