如何为多个用户设置 Docker 容器?

如何为多个用户设置 Docker 容器?

我对 docker 还很陌生,已经成功创建了几个容器供个人使用。当我考虑使用 docker 在我管理的服务器上分离服务时,我不明白它如何为多个用户工作。

Q1:多个用户如何使用同一个卷/共享文件夹?

示例:多个开发人员一起工作,需要使用一个通用的 Python 环境,但基础操作系统无法提供很好的支持。例如,RHEL6 使用了最新的 Python,使用了 tensorflow 和/或其他需要 Python 之外的系统库的软件包。过去,我会将所有这些都放在虚拟环境中,但仍然需要基础软件包匹配,并安装外部系统库。我可以轻松地为此构建一个 docker 映像。但是,我遇到了两个问题。

  1. 源代码文件夹位于 docker 镜像之外,因此它是一个已挂载的卷。所有创建或修改的源文件现在都归启动 docker 的用户所有
  2. 一种解决方案是让每个用户运行自己的容器,并在启动容器时指定用户。但是,这需要他们获得对 docker 可执行文件的访问权限,这意味着他们可以控制所有容器。另外,我不知道什么会阻止他们输入任何用户或 root?

Q2:如何在容器内部进行身份验证?

示例:我的服务器使用 winbind 向 Microsoft Active Directory 进行身份验证。我读到过,理想情况下,每个容器只有一个进程。如果我想在自己的容器中使用 SSH,SSH 如何知道如何进行身份验证?它不会被困在容器的命名空间中吗?其他服务(如 NFS、Samba 等)怎么办?

一个更普遍的问题是,是否有一份“最佳实践”指南,说明哪些服务应用程序应该拆分到单独的容器中?我见过 apache 在其自己的容器下,数据库在单独的容器下。这样做是因为它们通过网络进行通信。某些服务未通过网络连接(即 iptables、winbind、nfsd、samba),但我仍然在 docker hub 中看到它们的图像。这不会给需要查看所有内容的服务(如 Auditd、Crond、autofs)造成混乱吗?对于像 python 这样的东西来说,这似乎也是一团糟。也许一个用户想要 matplotlib,另一个用户想要 pyqtgraph。让他们使用虚拟环境似乎更容易,然后必须为每个容器设置和维护 docker 容器,尤其是当我需要为每个容器配置安全性(即 auditd、iptables、身份验证、各种设置等)时。

相关内容