繁体   English   中英

从 bash 脚本运行 docker

[英]Running docker from bash script

我正在使用作为 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 command2

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

#!/bin/bash
docker exec my_container gatk command1
docker wait my_container
docker exec my_container gatk command2

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

您可以一次性运行这两个命令:

docker run image /bin/bash -c "gatk command1 && gatk command2"

我设法解决了它。 问题是,当我运行 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;exit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM