我有一个托管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退出
这是卷声明
volumes:
- "/media/sf_devops-workspaces/dev-tools/continuous-integration/jenkins:/var/jenkins_home"发布于 2017-05-19 11:19:35
问题是,容器中的用户作为主机上的用户具有不同的userid:groupid。
你有两种可能性:
docker exec -it <container-name> bash的容器并显示用户id id -u <username>组id id -G <username>。将已挂载卷的权限更改为此userid:groupid。发布于 2019-02-05 21:22:30
简单地修复它以使用-u参数。请记住,这将作为根用户(uid=0)运行。
docker run -u 0 -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home jenkins/jenkins:lts发布于 2018-03-29 13:33:57
正如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命令。
https://stackoverflow.com/questions/44065827
复制相似问题