Docker用于一键式CLI应用程序

时间:2015-06-05 09:18:12

标签: linux security docker workflow bioinformatics

自从我第一次知道Docker以来,我认为它可能是我们在实验室中经常遇到的几个问题的解决方案。我是一家小型生物学研究小组的数据分析师。我正在使用Snakemake为我们的分析定义通常很大且非常复杂的工作流程。

从Snakemake,我通常在R,Python甚至命令行应用程序(如对齐器或注释工具)中调用小脚本。在这种情况下,遭受依赖地狱的情况并不罕见,因此我考虑将一些工具包装在Docker容器中。

此刻我陷入了一个不知道我是否选择了技术,或者我无法正确理解Docker所有信息的地步。

问题与你必须以root身份运行Docker工具有关,这是我根本不想做的事情,因为最初的想法是让每个愿意使用的研究人员都能使用dockerized应用程序它们。

AskUbuntu中,投票最多的答案建议将最终用户添加到docker组,但似乎这对安全性不利。另一方面,在security articles at Docker中,他们解释说以root身份运行工具有利于您的安全。我找到了similar questions at SO,但与容器内的环境有关。

好吧,我对此没有任何问题,但正如我碰巧发现的每个中等复杂性示例一样,它似乎更倾向于Web应用程序开发,系统最初可以启动容器一次然后忘记它

我正在考虑的事情:

  • 将Docker守护程序配置为TLS-enabled,TCP远程服务,并为相应的用户提供证书。 运行应用程序会有任何开销吗?安全问题?
  • 通过共享 / usr / local / bin / 卷或类似内容,创建仅使应用程序可用于主机的映像。这样安全吗? 如何创建一个不需要执行任何操作的守护进程容器?我发现的唯一示例意味着创建an infinite loop
  • nucleotid.es页似乎做了类似于我想要的事情,但我没有找到任何安全问题的参考。也许他们在虚拟机中运行所有容器,他们不必担心这些问题,因为他们不需要将dockerized应用程序暴露给更多人。

对我的冗长感到抱歉。我只想写下我陷入困境的心理过程(可能有缺陷,我知道,我知道)。总结一下:

是否有可能创建一个不需要使用sudo运行的dockerized命令行应用程序,可用于同一服务器中的多个人,并且不打算以守护进程的方式运行?< /强>

提前谢谢。

问候。

1 个答案:

答案 0 :(得分:1)

如果用户能够执行docker run,那么就能够控制主机系统,因为他们可以将文件从主机映射到容器,而在容器中,如果他们可以使用docker run,他们总是可以是root用户或docker exec。因此用户不应该直接执行docker。我认为最简单的解决方案是创建运行docker的脚本,这些脚本可以有suid标志,或者用户可以使用sudo访问它们。