坚持跨容器的用户

对于主要的RStudio Docker镜像,用户/密码信息位于容器中。 要创build一个新用户,您需要在容器中运行adduser ,请参阅: https : //github.com/rocker-org/rocker/wiki/Using-the-RStudio-image#multiple-users 。 当更新到一个新的容器时,这是一个问题,很明显, /etc/passwd/etc/shadow等不会跨容器持续存在。 我正在考虑像这样将文件挂载到主机上

 docker run -d -p 8787:8787 \ -v $(pwd)/passwd:/etc/passwd \ -v $(pwd)/shadow:/etc/shadow \ ... rocker/rstudio 

但我不确定与系统用户相关的文件是否应该从容器暴露给主机。 在用户添加的情况下,在rocker/rstudio顶部维护一个单独的图像会更好吗?还是有其他更好的?

我会select为所有需要的用户创build一个新的图像。 这是最容易重新部署的。 从主机挂载文件有可能在映像中显示具有错误所有权的系统文件。 如果您需要能够随时调整用户,那么只为这些文件(不是从主机映射)的卷可能工作,但您也需要主目录,可能需要挂载整个/ etc以避免inode来自安装单个文件的问题。

我明白,这不是问题 – 但是你很难去做你正在努力的原因是 – 因为它是错误的。

你可以绕过它,使用某种PAM插件将一些用户(从你的应用程序)移动到一个不同的auth插件,也可以使用一个定义文件,如/ etc / rstudio_users – 非常相似是用stfp和ftp用户完成的。 然后,您可以安全地在容器之间共享这个文件,而不必在共享所有用户的可怕的停止,也是系统用户,这将在某个时刻closures您的初始概念。

如果您希望这样做是正确的,请使用LDAP之类的方式正确共享authentication数据