首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从bash脚本运行docker

从bash脚本运行docker
EN

Stack Overflow用户
提问于 2021-07-17 16:55:12
回答 2查看 376关注 0票数 0

我正在使用一个作为docker镜像分发的工具(gatk),并尝试在shell脚本中使用它的命令。我在分离模式下运行docker。

代码语言:javascript
复制
sudo docker run --name my_container -d -v ~/test:/gatk/data -it broadinstitute/gatk:4.1.9.0

然后,我从shell脚本运行命令

代码语言:javascript
复制
#!/bin/bash
docker exec my_container gatk command1
wait
docker exec my_container gatk command2

command2需要来自command1的输入,所以我使用了wait,但在命令1完成之前,仍然会执行command2。我也试过了

代码语言:javascript
复制
#!/bin/bash
docker exec my_container gatk command1
docker wait my_container
docker exec my_container gatk command2

但是,在command1完成后,该脚本不会继续运行。

EN

回答 2

Stack Overflow用户

发布于 2021-07-18 17:31:21

您可以在一个快照中同时运行这两个命令:

代码语言:javascript
复制
docker run image /bin/bash -c "gatk command1 && gatk command2"
票数 0
EN

Stack Overflow用户

发布于 2021-07-18 22:51:32

我设法解决了这个问题。问题是,当我运行docker exec时,我没有将其定义为从shell接收输入。将-i标志添加到docker exec解决了此问题。这是完整的解决方案。

我在分离模式下启动docker

代码语言:javascript
复制
sudo docker run --name my_container -d -v ~/test:/gatk/data -it broadinstitute/gatk:4.1.9.0

现在我可以关闭终端,docker容器已经启动并运行,我可以在新的终端中使用它。我用以下代码生成了一个名为myscript.sh的bash脚本。

代码语言:javascript
复制
#!/bin/bash
docker exec -i my_container gatk command1
wait
docker exec -i my_container gatk command2

我运行脚本,否认它并关闭终端。

代码语言:javascript
复制
./myscript.sh&disown;exit
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68418979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档