我正在尝试运行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
时,它再次被拒绝。
答案 0 :(得分:0)
在评论中,发现图像的USER
中可能有一条Dockerfile
指令。由于examples
的文件访问权限,不允许该用户访问examples
。
可以用docker run选项USER
取代--user
。
一种快速而肮脏的解决方案是与--user=root
一起运行以允许任意访问。
请注意,在容器中以root
形式写入文件夹examples
的文件将归root
所有。
一个更好的解决方案是寻找examples
的所有者,称他为foo
。指定其用户ID和组ID以使容器中的用户完全相同:
docker run --user $(id -u foo):$(id -g foo) imagename
另一种可能的解决方案是允许使用chmod 666 examples
或chmod 644 examples
进行仲裁访问,但很可能您不希望这样做。
最好的方法是查看Dockerfile并检查USER
指令的用途。
--user=foo
或更准确地使用--user=$(id -u foo):$(id -g foo)
。USER
,则最好更改examples
的访问权限。examples
的所有者。答案 1 :(得分:0)
尝试以特权身份运行容器:
sudo docker run --privileged=true -itd -v /***/***:/*** ubuntu bash
例如:sudo docker run --privileged = true -itd -v / home / willie:/ wille ubuntu bash