【问题标题】:Automatically changing the docker container file permissions in a directory in Linux在 Linux 中自动更改目录中的 docker 容器文件权限
【发布时间】:2021-02-13 15:29:37
【问题描述】:

我们有一个在 Linux 虚拟机中运行的 docker 容器。该容器正在将日志写入容器中的一个目录中。

容器日志目录 - /opt/log/

卷中的这个目录挂载到主机,以便所有日志文件也可以在主机中使用。

主机目录 - /var/log/

这里我们看到容器正在创建具有 600 (-rw-------+) 权限的日志文件。没有为这些文件分配组读取权限。

相同的权限也反映在主机目录中。我们需要为该目录​​中创建的所有文件自动添加组读取权限(640)(-rw-r-----+),以便其他日志记录代理可以读取这些文件。

我也尝试设置 ACL 以在主机上添加此权限,但没有为该目录中的文件设置这些权限。

setfacl -Rdm g::r-- /var/log/

有没有一种方法可以自动为在此主机目录中创建的所有文件添加组读取权限?

【问题讨论】:

  • 我们遇到了类似的问题,我们无法启用 acl,并且 umask 被生成文件的进程简单地忽略了。最后,我们选择在读取和写入这些文件的容器中使用相同的 UID。

标签: linux docker permissions containers docker-volume


【解决方案1】:

来自以下文章,

https://dille.name/blog/2018/07/16/handling-file-permissions-when-writing-to-volumes-from-docker-containers/

有一个参数可以设置用户id和组id例如
docker run -it --rm --volume $(pwd):/source --workdir /source --user $(id -u):$(id -g) ubuntu

在启动容器时设置用户的权限。

【讨论】:

  • 我们在容器中存在一个用户,该用户不在主机中,并且容器必须仅以该用户启动。我尝试传递这些参数,但没有成功。
  • id -u 不指定用户,是当前登录主机的用户,还是当前用户。因此您的主机上没有此用户,因此您可以将 -u 和 -g 参数的参数更改为您需要的参数,该参数位于容器上。我已包含有关 id 命令man7.org/linux/man-pages/man1/id.1.html 的信息
猜你喜欢
  • 2018-05-25
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 2019-12-06
  • 1970-01-01
  • 2014-12-16
  • 2021-09-18
  • 2015-03-15
相关资源
最近更新 更多