安全性 – 如何在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/sh

chown -R appuser:appgroup /path/to/volume
exec runuser -u appuser "$@"

这假设您有runuser命令可用.你可以用sudo完成同样的事情.

通过在Dockerfile中包含ENTRYPOINT指令来使用上面的脚本:

FROM baseimage

COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/bin/sh", "entrypoint.sh"]
CMD ["/usr/bin/myapp"]

这将启动容器:

/bin/sh entrypoint.sh /usr/bin/myapp

入口点脚本将更改所需的权限,然后以appuser身份运行/usr/bin/myapp.

转载注明原文:安全性 – 如何在Docker容器中为非root用户提供对主机上安装的卷的访问权限 - 代码日志