Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于一次性CLI应用程序的Docker_Linux_Security_Docker_Workflow_Bioinformatics - Fatal编程技术网

Linux 用于一次性CLI应用程序的Docker

Linux 用于一次性CLI应用程序的Docker,linux,security,docker,workflow,bioinformatics,Linux,Security,Docker,Workflow,Bioinformatics,自从我第一次了解Docker以来,我认为它可能是我们在实验室通常面临的几个问题的解决方案。我在一个小型生物研究小组担任数据分析师。我用它来定义我们分析的工作流程——通常是大而复杂的工作流程 在Snakemake中,我通常调用R、Python甚至命令行应用程序(如对齐器或注释工具)中的小脚本。在这个场景中,经常会遇到依赖地狱,因此我考虑将一些工具包装到Docker容器中 此时此刻,我被困在一个点上,我不知道我是否选择了错误的技术,或者我是否不能正确地吸收关于Docker的所有信息 问题在于,您必须

自从我第一次了解Docker以来,我认为它可能是我们在实验室通常面临的几个问题的解决方案。我在一个小型生物研究小组担任数据分析师。我用它来定义我们分析的工作流程——通常是大而复杂的工作流程

在Snakemake中,我通常调用R、Python甚至命令行应用程序(如对齐器或注释工具)中的小脚本。在这个场景中,经常会遇到依赖地狱,因此我考虑将一些工具包装到Docker容器中

此时此刻,我被困在一个点上,我不知道我是否选择了错误的技术,或者我是否不能正确地吸收关于Docker的所有信息

问题在于,您必须以root用户身份运行Docker工具,这是我根本不想做的事情,因为最初的想法是让每个愿意使用Docker工具的研究人员都可以使用Docker工具

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

好的,我对此没有问题,但正如我偶然发现的每一个中等复杂度的示例一样,它似乎更倾向于web应用程序开发,在web应用程序开发中,系统可以首先启动容器一次,然后将其忘记

我现在正在考虑的事情:

  • 将Docker守护程序配置为TCP远程服务,并向相应的用户提供证书运行应用程序时会有任何开销吗?安全问题?
  • 通过共享/usr/local/bin/volume或类似文件,创建仅使应用程序对主机可用的映像。这安全吗如何创建一个不需要执行任何操作的守护化容器?我找到的唯一一个示例就是创建
  • 该页面似乎做了一些类似于我想要的事情,但我没有发现任何关于安全问题的参考。也许他们正在虚拟机中运行所有容器,在虚拟机中他们不必担心这些问题,因为他们不需要向更多人公开已停靠的应用程序
对不起,我说得太多了。我只是想写下我被困的心理过程(可能有缺陷,我知道,我知道)。总而言之:

是否有可能创建一个不需要使用sudo运行的停靠命令行应用程序,该应用程序可供同一台服务器上的多人使用,并且不打算以守护模式运行?

先谢谢你


关于。

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

您说“问题与您必须以root用户身份运行docker工具有关”,这是错误的,在Dockerfile中,您可以使用
用户
来使用非特权帐户,请参阅文档谢谢您的评论。是的,但那是指容器内部。它会更改运行内部进程的用户,并影响以下RUN、CMD和ENTRYPOINT命令。但是,在本例中,我指的是外部用户,实际上是从主机运行docker容器的用户。非常感谢!实际上,nucleotid.es项目页面讨论了编写脚本作为调用的包装。在这种情况下,我不记得读过关于suid标志的任何内容,但我将以这种方式尝试。我想我的思维被阻塞了,无法看到我被困的地方以外的东西。我曾试图实现这个想法,但我遇到了以下问题,这再次带来了我的安全顾虑。看来我想做的事情可能与Docker无关,是的,它与Docker没有直接关系。suid脚本更易于使用,但如果禁用它们,您仍然可以使用包装器或sudo方法。正如文章所说,一些发行版禁用suid脚本是因为它们很容易出错,从而导致利用它们进行攻击-是的,您需要小心使用它们-不允许用户指定docker参数和/或执行命令,在需要时验证参数。或者您可以使用另一种语言(c/go/python)来启动程序,但是您仍然需要只允许必要的参数,并且仍然需要验证它们。