从bash脚本启动Docker容器并在其上执行命令

我有一个问题,使用他们的docker集装箱运行Fenics:

背景是:一个主虚拟机通过REST API与用户通信,并获得一个或多个任务在Fenics中进行计算。 Fenics在docker集装箱上运行。 现在,主虚拟机必须使用脚本编排不同的工作虚拟机。

例如:用户想要使用参数集x和y来计算网格A和B。 对于这两个工人,可以使用安装了Fenics容器的VM。 我怎样才能启动一个docker容器,并通过使用bash脚本传入参数?

在第一次尝试,我甚至不能使用脚本访问我自己的计算机上创build的容器,因为容器立即退出。

#!/bin/bash clear docker run -dit -v $(pwd):/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable:curre$ OUTPUT=$(docker ps -q | grep "$name") echo $OUTPUT docker exec -dit $OUTPUT /bin/bash docker exec -dit $OUTPUT echo "Hallo" docker exec -dit $OUTPUT mkdir test docker exec -dit $OUTPUT echo "Ciao" 

如果我看着docker ps -a我只能看到退出的容器。

出现了两个问题:第一,这是传递命令的方式,第二,我如何保持容器运行?

可能很明显,我以前没有使用docker的经验,因此对任何帮助感激不尽。

最有可能的是,你想要做的是把你的命令放到一个文件commands.sh ,然后docker run --rm -v $(pwd):/home/fenics/shared -w /home/fenics/share --entrypoint bash quay.io/fenicsproject/stable:current commands.sh

这将做什么是共享您的文件夹,启动fenics容器,并执行该容器内的shell脚本(大概,您的输出将写入共享驱动器中的文件)。 --rm部分将在运行后清理容器。

我实际上不知道什么是fenics,如果有某种状态或初始化,请确保你正在处理你的commands.sh文件,因为越过入口点将阻止他们提供的任何奇怪的初始化脚本运行。 或者,他们的docker图片回购可能会解释如何将自定义脚本提供给容器。