gpt4 book ai didi

linux - 容器中的 Docker "permission denied"

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:20 24 4
gpt4 key购买 nike

我正在尝试运行 docker 镜像

docker run  -it -v $PWD/examples:/home/user/examples image 

这应该使主机中的 $PWD/examples 可以在容器中访问。然而,当我在容器中 ls 时,它一直给我

ls: cannot access 'examples': Permission denied

我已经尝试过类似问题的答案,z/Z 选项和 chcon -Rt svirt_sandbox_file_t/host/path/run --privileged,但它们对我的情况都没有任何影响。事实上,z 选项似乎在第一次 ls 时起作用,但是当我第二次发出 ls 时,它又被拒绝了。

最佳答案

在评论中发现图像的 Dockerfile 中可能有一条 USER 指令。由于 examples 的文件访问权限,此用户无权访问 examples


可以使用 docker 运行选项 --user 取代 USER

一个快速而肮脏的解决方案是使用 --user=root 运行以允许任意访问。请注意,在容器中作为 root 写入文件夹 examples 的文件将归 root 所有。

更好的解决方案是寻找examples 的所有者,称他为foo。指定其用户id和组id在容器中具有完全相同的用户:

docker run --user $(id -u foo):$(id -g foo)  imagename

另一种可能的解决方案是允许使用 chmod 666 exampleschmod 644 examples 进行任意访问,但很可能您不希望这样。


最好的方法是查看 Dockerfile 并检查 USER 指令的用途。

  • 如果它只是为了避免容器中的 root,最好的方法是使用 --user=foo 或者更准确地说 --user=$(id -u foo) :$(id -g foo).
  • 如果 Dockerfile/image 中的某些内容依赖于特定的 USER,则最好更改 examples 的访问权限。
  • 如果您有权访问 Dockerfile,则可以调整它以适合您的主机用户/示例 的所有者。

关于linux - 容器中的 Docker "permission denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51596279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com