是否有“多用户”Docker模式,例如科学集群?

我想使用Docker隔离在HPC Unix集群中使用的科学应用程序。 科学软件通常具有异国情调的依赖关系,因此将它们与Docker隔离似乎是一个好主意。 程序将作为工作而不是作为服务来运行。

我想让多个用户使用Docker,并且用户应该彼此隔离。 这可能吗?

我执行了一个本地Docker安装,并在Docker组中有两个用户。 对docker images的调用显示了两个用户的相同结果。

而且,作业应该在主叫用户的UID下运行,而不是根用户。

这样的设置是否可行? 之前已经完成了吗? 这是logging在任何地方?

不要忘了DinD(Docker在Docker中): jpetazzo/dind

您可以为每个用户分配一个Docker,并在这些Docker容器之一中,用户可以在Docker容器中启动一个作业。

我也对Docker的这种可能性感兴趣,原因类似。 我能想到的几个问题是:

  1. Docker Daemon以根用户身份运行,为Docker组中的任何用户提供有效的主机根权限(例如通过以root用户身份挂载主机/目录来实现泄漏权限)。
  2. 如上所述的多用户隔离
  3. 不知道这将与任何现有的负载平衡器发挥多好?

我遇到了可能值得一看的Shifter,部分解决了#1: http : //www.nersc.gov/research-and-development/user-defined-images/

另外我知道有讨论使用内核用户命名空间来提供映射容器:root – > host:非特权用户,但我不知道这是否发生。

就在这里! 它被称为Singularity,它被devise成具有科学应用和多用户HPC。 更多在http://singularity.lbl.gov/

好吧,我想会有越来越多的解决schemepopup来。 我将尝试在将来更新以下列表:

  • 用于执行Docker容器的udocker
  • 奇点 (荣誉Filo)是另一种基于Linux容器的解决scheme

有一个官方支持的Docker镜像,允许在Docker(dind)中运行Docker,可以在这里find: https ://hub.docker.com/_/docker/。 这样,每个用户都可以拥有自己的Docker守护进程。 首先,启动守护进程实例:

 docker run --privileged --name some-docker -d docker:stable-dins 

请注意 – – --privileged标志是必需的。 接下来,从第二个容器连接到该实例:

 docker run --rm --link some-docker:docker docker:edge version