无法在Docker容器中访问已装入的主机目录

时间:2017-07-21 07:49:12

标签: linux docker mount

我试图让我的Docker容器读取和写入主机目录。

我用:

运行容器
docker run -it -v $(pwd):/file logstash-5.1.2

在容器内部,我可以看到/ file在主机上具有我(非root)用户的uid,并且具有与主机上相同的权限:

drwxrwxrwx.   2 1156 1156 4096 Jul 21 05:00 file

并且root无法访问/文件。

root@c642b0c37e09:~# ls /file
ls: cannot open directory /file: Permission denied

我已经阅读了有关在容器中使用与主机相同的uid创建用户的帖子,但这似乎不受欢迎。

  1. 为什么root无法访问该目录?我认为它可以做任何事情。
  2. 在Docker中让容器读取和写入不属于root的挂载目录的最佳方法是什么?
  3. 我们也在使用Rancher。这会让它变得更容易吗?我还没有遇到过不同的东西,主要是因为我试图看看我是否可以在Docker中完全做到这一点。

1 个答案:

答案 0 :(得分:0)

您应该将上下文更改为svirt_sandbox_file_t,以允许容器在此上下文中访问此文件夹。

如果您确定文件夹权限,那么只需尝试;

chcon  -R -t svirt_sandbox_file_t /your/host/path

如果不确定尝试;

chown  -R groupId:userId /your/host/path
chcon  -R -t svirt_sandbox_file_t /your/host/path

在这里,chcon命令应用SELinux上下文,将“/ your / host / path”的上下文更改为svirt_sandbox_file_t。