自从我第一次知道Docker以来,我认为它可能是我们在实验室中经常遇到的几个问题的解决方案。我是一家小型生物学研究小组的数据分析师。我正在使用Snakemake为我们的分析定义通常很大且非常复杂的工作流程。
从Snakemake,我通常在R,Python甚至命令行应用程序(如对齐器或注释工具)中调用小脚本。在这种情况下,遭受依赖地狱的情况并不罕见,因此我考虑将一些工具包装在Docker容器中。
此刻我陷入了一个不知道我是否选择了技术,或者我无法正确理解Docker所有信息的地步。
问题与你必须以root身份运行Docker工具有关,这是我根本不想做的事情,因为最初的想法是让每个愿意使用的研究人员都能使用dockerized应用程序它们。
在AskUbuntu中,投票最多的答案建议将最终用户添加到docker组,但似乎这对安全性不利。另一方面,在security articles at Docker中,他们解释说以root身份运行工具有利于您的安全。我找到了similar questions at SO,但与容器内的环境有关。
好吧,我对此没有任何问题,但正如我碰巧发现的每个中等复杂性示例一样,它似乎更倾向于Web应用程序开发,系统最初可以启动容器一次然后忘记它
我正在考虑的事情:
对我的冗长感到抱歉。我只想写下我陷入困境的心理过程(可能有缺陷,我知道,我知道)。总结一下:
是否有可能创建一个不需要使用sudo运行的dockerized命令行应用程序,可用于同一服务器中的多个人,并且不打算以守护进程的方式运行?< /强>
提前谢谢。
问候。
答案 0 :(得分:1)
如果用户能够执行docker run
,那么就能够控制主机系统,因为他们可以将文件从主机映射到容器,而在容器中,如果他们可以使用docker run
,他们总是可以是root用户或docker exec
。因此用户不应该直接执行docker。我认为最简单的解决方案是创建运行docker的脚本,这些脚本可以有suid标志,或者用户可以使用sudo访问它们。