12

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

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

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

此外,作业应在调用用户的 UID 下运行,而不是以 root 身份运行。

这样的设置可行吗?以前做过吗?这在任何地方都有记录吗?

4

5 回答 5

5

就在这里!它被称为 Singularity,它是为科学应用程序和多用户 HPC 而设计的。更多信息请访问http://singularity.lbl.gov/

于 2017-04-24T04:58:38.513 回答
4

不要忘记 DinD(Docker 中的 Docker):jpetazzo/dind

您可以为每个用户指定一个 Docker,并且在其中一个 docker 容器中,用户可以在 docker 容器中启动作业。

于 2015-04-27T11:48:16.090 回答
4

好的,我认为会出现越来越多的解决方案。将来我会尝试更新以下列表:

  • udocker用于以用户身份执行 Docker 容器
  • Singularity (Kudos to Filo) 是另一个基于 Linux 容器的解决方案
于 2017-05-16T10:46:17.977 回答
1

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

  1. Docker 守护进程以 root 身份运行,为 docker 组中的任何人提供有效的主机 root 权限(例如,通过以 root 身份挂载主机/目录来泄漏权限)。
  2. 如上所述的多用户隔离
  3. 不确定这将如何与任何现有的负载平衡器一起发挥作用?

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

另外我知道有讨论使用内核用户命名空间来提供映射容器:root --> host:non-privileged user,但我不确定这是否发生。

于 2015-06-10T11:26:29.740 回答
1

有一个官方支持的 Docker 映像,允许在 Docker (dind) 中运行 Docker,可在此处获取: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
于 2017-08-29T03:03:34.483 回答