詹金斯错误的卷权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了詹金斯错误的卷权限相关的知识,希望对你有一定的参考价值。

我有托管在那里我已经安装了码头工人和使用泊坞窗,撰写文件创建容器的Oracle Linux的虚拟机。我放置在共享文件夹下的卷詹金斯但在开始时搬运工-构成了我得到了以下错误詹金斯:

詹金斯|摸:不能碰“/var/jenkins_home/copy_reference_file.log”:权限被拒绝詹金斯|无法写入/var/jenkins_home/copy_reference_file.log。错误的卷的权限?詹金斯退出,代码1

这里的卷声明

  volumes:
    - "/media/sf_devops-workspaces/dev-tools/continuous-integration/jenkins:/var/jenkins_home"
答案

问题是,在容器中的用户拥有不同的用户ID:组识别符号作为主机上的用户。

你有两种可能性:

  1. 可以保证在容器中的用户具有相同的用户ID:组识别符号,如主机上的用户,它可以访问安装的卷。对于这一点,你必须调整在Dockerfile用户。与同一用户ID的dockerfile创建一个用户:GROUPID,然后切换到该用户https://docs.docker.com/engine/reference/builder/#user
  2. 您可以确保主机上的用户具有相同的用户ID:组识别符号像在容器中的用户。对于这一点,与docker exec -it <container-name> bash进入容器,并显示用户ID id -u <username>组ID id -G <username>。更改安装的卷到这个用户ID的权限:组识别符号。
另一答案

最简单的解决它使用-u参数。记住这将运行作为根用户(UID = 0)

docker run -u 0 -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home jenkins/jenkins:lts
另一答案

作为haschibaschi在容器中陈述你的用户有不同的用户名:比主机上的用户GROUPID。

为了解决这个问题是没有的(问题)卷映射到启动容器,然后在容器上运行的bash:

docker run -p 8080:8080 -p 50000:50000 -it jenkins bin/bash

一旦容器的外壳内运行id命令,你会得到的结果一样:

uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins)

退出容器,去你试图映射并运行该文件夹:

chown -R 1000:1000 .

随着现在的权限匹配,你应该能够与卷映射运行原始泊坞窗命令。

另一答案

此错误解决使用下面的命令。

转到您的詹金斯数据安装路径:/媒体

运行以下命令:

cd /media
sudo chown -R ubuntu:ubuntu sf_devops-workspaces

重启詹金斯搬运工容器

docker-compose restart jenkins
另一答案

我有同样的问题,它得到了禁用SELINUX以后解决。这不是建议禁用SELINUX所以安装自定义semodule并启用它。有用。只有改变权限不会在CentOS 7工作。

以上是关于詹金斯错误的卷权限的主要内容,如果未能解决你的问题,请参考以下文章

詹金斯 Maven 构建 137 错误

如何从詹金斯访问maven属性?

如何修复“代码应明确检查权限是不是可用”错误

詹金斯克隆问题。用户可以编辑原始作业的配置

詹金斯错误:找不到模块'打字稿'

詹金斯中的堆空间错误