2015-04-27 25 views
7

我想使用Docker隔离在HPC Unix集群中使用的科学应用程序。科学软件通常具有异国情调的依赖关系,因此使用Docker隔离它们似乎是一个好主意。这些计划将作为工作而不是作为服务来运行。是否有“多用户”Docker模式,例如为科学集群?

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

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

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

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

+1

Intersiting的想法,但只有docker我看不到解决方案。你是否已经查阅过像http://shipyard-project.com/这样的管理工具。可能你可以改变那里的usermangement使它对你有用。 –

回答

1

好的,我认为会有越来越多的解决方案弹出来。我会尽力在将来更新以下列表:

  • udocker执行Docker容器为用户
  • Singularity(荣誉给费罗)是另一种基于Linux的解决方案的容器
3

不要忘记DIND(码头工人在码头工人):jpetazzo/dind

你可以按用户奉献一个码头工人,和那些搬运工容器之一内,用户可以在一个码头工人容器启动工作。

+0

请注意,dind容器需要使用--privileged标志来运行,因此攻击者可能会忽略隔离(例如,通过挂载设备)。 –

1

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

  1. 的泊坞守护程序运行作为根,该搬运工组 与有效主机根权限提供任何人(由 例如泄漏权限安装主机/目录为根目录) 。
  2. 如上所述的多用户隔离
  3. 不知道这将与任何现有的负载均衡器发挥多大作用?

我碰到移位器可能是值得一看进来的部分地解决了#1: http://www.nersc.gov/research-and-development/user-defined-images/

而且我知道有讨论使用内核用户命名空间提供映射容器:根 - >主机:非特权用户,但我不确定这是否发生。

+0

似乎用户命名空间已从Docker 1.7中删除。看起来他们引入了一个安全问题,因为引入了libnetwork,希望他们能够在v1.8上着陆 –

0

有一个正式支持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 
相关问题