Docker 对于一次性 CLI 应用程序

Docker for a one shot CLI application

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

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

此刻我卡在了一个地步,不知道是我技术选错了,还是我没能很好地吸收Docker的所有信息。

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

AskUbuntu, the most voted answer proposes to add the final user to the docker group, but it seems that this is not good for security. In the security articles at Docker, on the other hand, they explain that running the tools as root is good for your security. I have found similar questions at SO,但与容器内部环境有关。

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

我现在正在考虑的事情:

抱歉我的冗长。我只是想写下我卡住的心理过程(可能有缺陷,我知道,我知道)。总结:

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

提前致谢。

此致。

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