pp3*_*377 3 linux permissions virtualization containers docker
我正在尝试通过以下方式运行 docker 映像
docker run -it -v $PWD/examples:/home/user/examples image
Run Code Online (Sandbox Code Playgroud)
这应该使$PWD/examples主机可以在容器中访问。但是,当我ls在容器中时,它不断给我
ls: cannot access 'examples': Permission denied
Run Code Online (Sandbox Code Playgroud)
我已经尝试了类似问题的答案,z/Z选项和chcon -Rt svirt_sandbox_file_t /host/path/和run --privileged,但在我的情况下它们都没有任何影响。事实上,该z选项似乎第一次有效ls,但当我ls第二次发出时,它再次被拒绝。
在评论中,结果表明图像中可能有USER说明Dockerfile。examples由于 的文件访问权限,不允许此用户访问examples。
可以USER用 docker run option取代--user。
一个快速而肮脏的解决方案是运行--user=root以允许任意访问。请注意,root在容器中写入文件夹的文件examples将归root.
更好的办法是找主人examples,给他打电话foo。指定其用户 id 和组 id 以在容器中具有完全相同的用户:
docker run --user $(id -u foo):$(id -g foo) imagename
Run Code Online (Sandbox Code Playgroud)
另一种可能的解决方案是允许使用chmod 666 examples或进行任意访问chmod 644 examples,但很可能您不想要那样。
最好的方法是查看 Dockerfile 并检查USER指令的目的。
--user=foo或更准确地说--user=$(id -u foo):$(id -g foo)。USER,则最好更改examples.examples.| 归档时间: |
|
| 查看次数: |
13875 次 |
| 最近记录: |