我正在尝试运行Jenkins Docker容器并获得错误的卷许可权。 环顾四周,我可以看到大多数人说这归因于主机文件夹的所有权,但是我的容器具有匹配的ID,所以我无法确定正在发生什么。
centos@ip-10-189-173-122 ~]$ docker run -ti jenkins/jenkins /bin/bash
jenkins@65ae3a6726f8:/$ id
uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins)
jenkins@beb6a3a225da:/$ ls -nl /var/
total 0
drwxr-xr-x. 2 0 0 6 Jun 26 12:03 backups
drwxr-xr-x. 1 0 0 22 Sep 5 01:21 cache
drwxr-xr-x. 3 1000 1000 78 Oct 3 14:49 jenkins_home
jenkins@65ae3a6726f8:/$ exit
exit
[centos@ip-10-189-173-122 ~]$ id
uid=1000(centos) gid=1000(centos) groups=1000(centos),4(adm),10(wheel),190(systemd-journal),1001(docker) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[centos@ip-10-189-173-122 ~]$ ll -n /home/centos/
total 0
drwxrwxr-x. 2 1000 1000 6 Oct 3 14:45 JENKINS
[centos@ip-10-189-173-122 ~]$ docker run -ti -v /home/centos/JENKINS:/var/jenkins_home jenkins/jenkins /bin/bash
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
添加--privileged标志可使其正常工作并以正确的用户身份写入:/
答案 0 :(得分:0)
这很可能是由SELinux引起的。通过在末尾添加:z
或:Z
来更改挂载卷的方式,具体取决于其他容器是否共享同一卷:
docker run -ti -v /home/centos/JENKINS:/var/jenkins_home:z \
jenkins/jenkins /bin/bash
此设置下的文档略薄。有关更多详细信息,您可以查看https://docs.docker.com/storage/bind-mounts/#configure-the-selinux-label
答案 1 :(得分:0)
事实证明这是我使用旧版本的Docker,升级到较新的docker-ce可以解决此问题。不知道为什么。。。