从协调器容器内部启动特定任务容器

从协调器容器内部启动特定任务容器

我有执行特定任务的容器,例如运行 R-project 命令或通过运行“docker (run|exec) run.sh”来创建音频文件的波形,我正在寻找从其他容器内部运行这些任务的方法,而不必为每个新任务做额外的工作。

我目前考虑的解决这个问题的方法是通过绑定容器内的套接字来授予对docker守护进程的访问权限。我的主机运行一个docker容器,该容器以用户身份运行一个应用程序app

主机docker socket挂载在docker容器内部,并以root身份创建一个脚本/usr/local/run_other_docker.sh

现在,用户app对已挂载的 docker 套接字没有访问权限,但/usr/local/run_other_docker.sh在以 sudoer 身份获得无密码访问权限后就可以运行。

这有多危险?

是否有一种标准/安全的方法可以从容器内部启动其他任务容器,而无需绑定到主机docker套接字?

我遇到的唯一其他解决方案是创建一个在第二个容器中运行的微服务,以供第一个容器调用。这是不可取的,因为它增加了更多需要维护的东西,需要为每个这样的用例进行维护。

答案1

我原本计划在设定赏金后重新表述这个问题,但不幸的是本周太忙了,我没有时间这样做。

经过进一步研究并确认没有解决方案或至少没有引起更多兴趣后,我认为寻求我想要做的事情可能是一种糟糕的架构。

为了避免在容器内使用 sudo,我最终将主机路径作为卷安装,并在主机上使用文件观察器,当主应用程序创建要求在该路径下处理的新文件时,该文件观察器运行特定于作业的容器。

相关内容