【发布时间】:2016-06-07 16:09:19
【问题描述】:
我使用以下命令运行一个 docker 容器,并将一个目录从主机(/root/database)映射到容器(/tmp/install/database):
# docker run -it --name oracle_install -v /root/database:/tmp/install/database bofm/oracle12c:preinstall bash
但是在容器中,我发现我无法使用ls 列出/tmp/install/database/ 中的内容,尽管我是root 并且拥有所有权限:
[root@77eb235aceac /]# cd /tmp/install/database/
[root@77eb235aceac database]# ls
ls: cannot open directory .: Permission denied
[root@77eb235aceac database]# id
uid=0(root) gid=0(root) groups=0(root)
[root@77eb235aceac database]# cd ..
[root@77eb235aceac install]# ls -alt
......
drwxr-xr-x. 7 root root 4096 Jul 7 2014 database
我在主机中查看/root/database,一切似乎都正常:
[root@localhost ~]# ls -lt
......
drwxr-xr-x. 7 root root 4096 Jul 7 2014 database
为什么docker容器提示“Permission denied”?
更新:
根本原因与SELinux 有关。其实我去年也遇到过类似的issue。
【问题讨论】:
-
可以尝试将
--privileged添加到docker run命令并告诉我们权限是否仍然被拒绝。另外,你能(在主机上)表演# ls -lh /tmp/install/database吗? -
@Auzias:是的,添加
--privileged有效!谢谢!您能否写一个答案并解释在容器中以 root 用户身份工作时使用此选项有什么区别? -
@Auzias:我在
OP更新,请查收,谢谢! -
还没有,因为我不确定原因。你能表演(在主机上)
# ls -lh /tmp/install/database吗? (您提供了ls -ldh /root/database没有 /tmp 之一)。另外,您是在特定设备上@987654339@ 吗? -
@Auzias:主机上没有
/tmp/install/database,它在容器中。
标签: linux docker permissions permission-denied user-permissions