我在使用Docker容器运行Fenics时遇到问题:
背景是:一个主要VM通过REST API与用户通信,并获取一个或多个要在Fenics中计算的任务。 Fenics在docker容器上运行。现在,主VM必须使用脚本编排不同的工作虚拟机。
示例:用户希望使用参数集x和y计算网格A和B.为此,可以使用两个worker-VM,它们安装了Fenics容器。如何使用bash脚本启动docker容器并将参数传递给它?
在第一次尝试中,我甚至无法使用脚本访问我自己计算机上创建的容器,因为容器会立即退出。
#!/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的经验,因此感谢任何帮助。
答案 0 :(得分:0)
最有可能的是,您要将命令放入文件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文件中处理它,因为覆盖入口点将阻止任何花哨的init脚本他们提供跑步。或者,他们的docker image repo可以解释如何将自定义脚本提供给容器。