当前位置: 首页 > 面试题库 >

在Docker中访问主机目录的权限被拒绝

方飞白
2023-03-14
问题内容

概要
我试图在Docker中挂载主机目录,但是即使访问权限看起来不错,也无法从容器中访问主机目录。

细节
我在做

sudo docker run -i -v /data1/Downloads:/Downloads ubuntu bash

接着

ls -al

它给了我:

total 8892
drwxr-xr-x.  23 root root    4096 Jun 18 14:34 .
drwxr-xr-x.  23 root root    4096 Jun 18 14:34 ..
-rwxr-xr-x.   1 root root       0 Jun 18 14:34 .dockerenv
-rwx------.   1 root root 9014486 Jun 17 22:09 .dockerinit
drwxrwxr-x.  18 1000 1000   12288 Jun 16 11:40 Downloads
drwxr-xr-x.   2 root root    4096 Jan 29 18:10 bin
drwxr-xr-x.   2 root root    4096 Apr 19  2012 boot
drwxr-xr-x.   4 root root     340 Jun 18 14:34 dev
drwxr-xr-x.  56 root root    4096 Jun 18 14:34 etc
drwxr-xr-x.   2 root root    4096 Apr 19  2012 home

以及更多类似的内容(我认为这是相关的部分)。

如果我做

cd /Downloads
ls

结果是

ls: cannot open directory .: Permission denied

主机是Fedora 20,带有Docker 1.0.0和go1.2.2。

怎么了?


问题答案:

这是SELinux问题。

您可以暂时签发

su -c "setenforce 0"

在主机上访问或通过运行添加SELinux规则

chcon -Rt svirt_sandbox_file_t /path/to/volume

特别:

由于Docker最终合并了一个补丁,该补丁将在docker-1.7中显示(最近我们一直在RHEL,CentOS和Fedora的docker-1.6中携带该补丁),因此最近这样做变得更加容易。

此修补程序在卷安装(-v)上增加了对“ z”和“ Z”的支持。

例如:

docker run -v /var/db:/var/db:z rhel7 /bin/sh

将自动执行chcon -Rt svirt_sandbox_file_t /var/db手册页中所述。

更好的是,您可以使用Z。

docker run -v /var/db:/var/db:Z rhel7 /bin/sh

这将使用与容器一起运行的确切MCS标签来标记容器中的内容,基本上,每个容器chcon -Rt
svirt_sandbox_file_t -l s0:c1,c2 /var/db在s0:c1,c2不同的MCS标签上运行。



 类似资料:
  • 问题内容: 在将非root用户添加到sudoers组的映像构建过程中,无法创建文件夹。这是我的Dockerfile: 我得到错误: 问题答案: Docker容器内的文件系统就像Docker容器外的文件系统一样工作:如果要创建文件或目录,则需要适当的权限。在这种情况下,您尝试以非root用户身份创建(因为该指令更改了用于运行其后所有命令的UID)。那是行不通的,因为它拥有并具有mode 。 请尝试:

  • Docker安装在AWS EC2 Ubuntu 16.04实例上,如下所示: 引发权限被拒绝错误: 尝试连接到处的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock: 收到http:///var/run/docker.sock/v1.39/info: 拨号unix/var/run/docker.sock:connect:权限被拒绝 显示: uname-a

  • 这是我面临这个问题的一天。我不知道这是因为托管服务器还是我在joomla中的配置。 我正在尝试使用Akeba备份将我的joomla网站上传到ftp。首先,我上传了kickstart。php和Akeba文件的网站,它是成功的。 现在,我做了安装使用akeeba和最后一部分,它显示了一个模式,显示一个按钮"查看您的网站前端"。而不是去网站前端它下载一个index.php文件...我输入http://m

  • 有没有人遇到过这样的情况:当我对一个用户使用管理策略时,它可以工作,但当我使用内联策略时,它说访问被拒绝。我为IAM用户授予了对bucket读取访问权限,即它只能访问bucket。 我也试过这个

  • 问题内容: 我为此付出了一切,所以希望你们能帮助我。在带有docker-machine的OSX 10.11.2中,我有一个docker- compose文件,该文件应构建一个本地Dockerfile并将MySQL容器附加到该文件。MySQL容器应该在我存储数据库数据的地方安装一个本地文件夹,因此,如果容器或VM关闭,我可以重新启动它而不会丢失数据。问题是,当我运行它时,它将引发权限错误: 我已经尝