【问题标题】:Can't access mounted host directory in Docker container无法访问 Docker 容器中挂载的主机目录
【发布时间】:2017-12-27 04:07:34
【问题描述】:

我正在尝试让我的 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 不能访问 /file。

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

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

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

【问题讨论】:

  • 这可能是在主机上运行 SELinux 的问题。
  • 我应该提到,我们在主机上运行 Red Hat。

标签: linux docker mount


【解决方案1】:

您应该将上下文更改为 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。

【讨论】:

  • 或使用 audit2allow 为您更改上下文。
猜你喜欢
  • 1970-01-01
  • 2016-11-10
  • 2020-05-27
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多