提问者:小点点

Jenkins错误的卷权限


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

jenkins | touch:无法触摸“/var/jenkins_home/copy_reference_文件”。日志“:权限被拒绝jenkins |无法写入/var/jenkins_home/copy_reference_文件。日志错误的卷权限?詹金斯带着密码1离开了

这是卷的声明

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

共3个答案

匿名用户

很容易修复它使用-u参数。请记住,这将作为root用户运行(uid=0)

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

匿名用户

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

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

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

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

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

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

chown -R 1000:1000 .

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

匿名用户

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

你有两种可能:

>

  • 您可以确保容器中的用户具有与主机上的用户相同的userid:groupid,主机上的用户可以访问装入的卷。为此,您必须调整Dockerfile中的用户。在dockerfile中创建具有相同用户ID:groupid的用户,然后切换到此用户https://docs.docker.com/engine/reference/builder/#user

    可以确保主机上的用户具有与容器中的用户相同的userid: group pid。为此,使用docker exec-it输入容器