如何授予Docker容器中的非root用户访问主机上安装的卷的权限
我以非root用户身份在Docker容器中运行应用程序。我这样做是因为这是最佳做法之一。但是,在运行容器时,我将主机卷安装到该容器上-v
/some/folder:/some/folder。我这样做是因为在docker容器中运行的应用程序需要将文件写入已安装的主机文件夹中。但是由于我以非root用户身份运行应用程序,因此它无权写入该文件夹
是否可以授予docker容器中的非root用户访问托管卷的权限?
如果不是,我唯一的选择是以root身份在docker容器中运行进程吗?
回答:
这里没有神奇的解决方案:对docker内部的权限的管理与没有docker的权限相同。您需要运行适当的chown
和chmod
命令来更改目录的权限。
一种解决方案是让您的容器以root用户身份运行,并使用ENTRYPOINT
脚本进行适当的权限更改,然后再CMD
以非特权用户身份使用。例如,将以下内容放入entrypoint.sh
:
#!/bin/shchown -R appuser:appgroup /path/to/volume
exec runuser -u appuser "$@"
假设您有runuser
可用的命令。您可以使用sudo
替代品完成几乎相同的事情。
通过ENTRYPOINT
在Dockerfile中包含指令来使用以上脚本:
FROM baseimageCOPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/bin/sh", "entrypoint.sh"]
CMD ["/usr/bin/myapp"]
这将以以下内容启动容器:
/bin/sh entrypoint.sh /usr/bin/myapp
入口点脚本将进行所需的权限更改,然后以/usr/bin/myapp
身份运行appuser
。
以上是 如何授予Docker容器中的非root用户访问主机上安装的卷的权限 的全部内容, 来源链接: utcz.com/qa/421792.html