我有一台托管Oracle Linux的虚拟机,在其中安装了Docker并使用docker- compose文件创建了容器。我将jenkins卷放在一个共享文件夹下,但是在启动docker-compose时,我遇到了Jenkins的以下错误:
詹金斯| 触摸:无法触摸’/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"
问题是,容器中的用户与主机上的用户具有不同的userid:groupid。
您有两种可能性:
您可以确保容器中的用户具有与主机上的用户相同的userid:groupid,该主机可以访问装入的卷。为此,您必须在Dockerfile中调整用户。在dockerfile中使用相同的userid:groupid创建一个用户,然后切换到该用户https://docs.docker.com/engine/reference/builder/#user
您可以确保主机上的用户与容器中的用户具有相同的userid:groupid。为此,使用输入容器,docker exec -it <container-name> bash并显示用户ID id -u <username>组ID id -G <username>。将装入的卷的权限更改为此userid:groupid。
docker exec -it <container-name> bash
id -u <username>
id -G <username>