当以非root用户身份运行docker容器时,我看到了两种方法:
Canvas
时使用--user
选项。docker run
)。而是传入一些包含UID和GID的环境变量。逻辑已添加到入口点脚本中,以使用此UID启动进程。第一个选项最简单,实际上并不需要在容器内创建用户。您只需确保对于映射的卷,主机上存在UID和GID。
第二个选项似乎更灵活,但也很难设置。据我了解,您的容器最初以root用户身份运行,从而使您有一些时间从入口点脚本执行一些一次性的初始化和设置。然后,最后使用--user
或类似命令启动容器的主进程。最终在容器中运行并使用(读取和写入)您的卷的进程使用适当的UID:GID进行此操作。
基本上,选项2如下:
suexec
个位置来设置该用户的访问权限选项2是最好的方法吗?我现在使用chmod
作为启动服务的初始化过程。我将使用tini
启动我的tini
,运行上述步骤,最后在服务器进程上执行entrypoint.sh
吗?
我一直在努力处理Docker中的用户设置内容。在Dockerfile中suexec
没有任何意义,因为我需要UID匹配主机上有意义的内容(卷的内容也需要主机上的用户访问)。>