是否有 "multi-user" Docker 模式,例如科学集群?

Is there a "multi-user" Docker mode, e.g. for scientific clusters?

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

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

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

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

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

别忘了 DinD(Docker in Docker):jpetazzo/dind

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

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

  1. Docker 守护程序以 root 身份运行,为 docker 组中的任何人提供 具有有效的主机根权限(例如泄漏权限 以 root 身份挂载主机/目录)。
  2. 提到的多用户隔离
  3. 不确定这与任何现有负载平衡器的配合情况如何?

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

我也知道有人讨论使用内核用户命名空间来提供映射 container:root --> host:non-特权用户,但我不确定这是否会发生。

是的!它称为 Singularity,专为科学应用程序和多用户 HPC 而设计。更多内容在 http://singularity.lbl.gov/

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

  • udocker 以用户身份执行 Docker 个容器
  • Singularity(Filo 的荣誉)是另一个 Linux 基于容器的解决方案

有官方支持的 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