gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:39:35 36 4
gpt4 key购买 nike

我在使用其Docker容器运行Fenics时遇到问题:

其背景是:一个主虚拟机通过REST API与用户通信,并获得一个或多个任务以Fenics进行计算。 Fenics在docker容器上运行。现在,主虚拟机必须使用脚本来编排不同的辅助虚拟机。

示例:用户希望使用参数集x和y计算网格A和B。为此,可以使用两个安装了Fenics容器的辅助VM。如何使用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的经验,因此感谢您的帮助。

最佳答案

最有可能要做的是将命令放入文件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镜像存储库可能会解释如何将自定义脚本提供给容器。

关于bash - 从bash脚本启动docker容器并在其上执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46651065/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com