我正在使用一个作为docker镜像分发的工具(gatk),并尝试在shell脚本中使用它的命令。我在分离模式下运行docker。
sudo docker run --name my_container -d -v ~/test:/gatk/data -it broadinstitute/gatk:4.1.9.0然后,我从shell脚本运行命令
#!/bin/bash
docker exec my_container gatk command1
wait
docker exec my_container gatk command2command2需要来自command1的输入,所以我使用了wait,但在命令1完成之前,仍然会执行command2。我也试过了
#!/bin/bash
docker exec my_container gatk command1
docker wait my_container
docker exec my_container gatk command2但是,在command1完成后,该脚本不会继续运行。
发布于 2021-07-18 17:31:21
您可以在一个快照中同时运行这两个命令:
docker run image /bin/bash -c "gatk command1 && gatk command2"发布于 2021-07-18 22:51:32
我设法解决了这个问题。问题是,当我运行docker exec时,我没有将其定义为从shell接收输入。将-i标志添加到docker exec解决了此问题。这是完整的解决方案。
我在分离模式下启动docker
sudo docker run --name my_container -d -v ~/test:/gatk/data -it broadinstitute/gatk:4.1.9.0现在我可以关闭终端,docker容器已经启动并运行,我可以在新的终端中使用它。我用以下代码生成了一个名为myscript.sh的bash脚本。
#!/bin/bash
docker exec -i my_container gatk command1
wait
docker exec -i my_container gatk command2我运行脚本,否认它并关闭终端。
./myscript.sh&disown;exithttps://stackoverflow.com/questions/68418979
复制相似问题