首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins错误的卷权限

Jenkins错误的卷权限
EN

Stack Overflow用户
提问于 2017-05-19 09:05:36
回答 10查看 42.8K关注 0票数 26

我有一个托管Oracle Linux的虚拟机,在这里我安装了Docker,并使用docker-compose文件创建了容器。我将jenkins卷放在一个共享文件夹下,但是当启动docker时,我得到了Jenkins的以下错误:

jenkins _ touch:无法触摸‘/var/ jenkins _home/copy_reference_file.log’:被拒绝的权限jenkins x不能写到/var/jenkins_home/copy_reference_file.log。错误的音量权限?jenkins用代码1退出

这是卷声明

代码语言:javascript
复制
  volumes:
    - "/media/sf_devops-workspaces/dev-tools/continuous-integration/jenkins:/var/jenkins_home"
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2017-05-19 11:19:35

问题是,容器中的用户作为主机上的用户具有不同的userid:groupid。

你有两种可能性:

  1. 您可以确保容器中的用户与主机上的用户具有相同的userid:groupid,后者可以访问已挂载的卷。为此,您必须调整Dockerfile中的用户。在dockerfile中使用相同的userid:groupid创建一个用户,然后切换到这个用户https://docs.docker.com/engine/reference/builder/#user
  2. 您可以确保主机上的用户具有与容器中的用户相同的userid:groupid。为此,输入带有docker exec -it <container-name> bash的容器并显示用户id id -u <username>组id id -G <username>。将已挂载卷的权限更改为此userid:groupid。
票数 14
EN

Stack Overflow用户

发布于 2019-02-05 21:22:30

简单地修复它以使用-u参数。请记住,这将作为根用户(uid=0)运行。

代码语言:javascript
复制
docker run -u 0 -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home jenkins/jenkins:lts
票数 29
EN

Stack Overflow用户

发布于 2018-03-29 13:33:57

正如haschibaschi所述,容器中的用户与主机上的用户有不同的userid:groupid。

要解决这个问题,需要在没有(有问题的)卷映射的情况下启动容器,然后在容器上运行bash:

代码语言:javascript
复制
docker run -p 8080:8080 -p 50000:50000 -it jenkins bin/bash

一旦进入容器的shell,运行id命令,您将得到如下结果:

代码语言:javascript
复制
uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins)

退出容器,转到要映射的文件夹并运行:

代码语言:javascript
复制
chown -R 1000:1000 .

有了现在匹配的权限,您应该能够使用卷映射运行原始的docker命令。

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

https://stackoverflow.com/questions/44065827

复制
相关文章

相似问题

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