从docker容器获取命令执行结果

时间:2019-04-15 17:41:15

标签: bash docker

反正我知道docker容器中命令何时完成?我创建了一个Docker容器,并能够通过docker exec将命令从本地发送到Docker容器中 到目前为止,在我的bash脚本中,我正在使用sleep等待docker容器中的“ cd root:npm install”命令完成。如果我没有睡眠,则将npm install发送到docker容器后立即打印完成。如何npm install在docker容器中完成后才能打印出睡眠?

docker exec -d <docker container name> bash -c "cd root;npm install" sleep 100 echo "done"

3 个答案:

答案 0 :(得分:1)

如果要使其在前台运行(-d标志),请不要在后台运行该命令:

docker exec <docker container name> bash -c "cd root;npm install"
echo "done"

答案 1 :(得分:0)

将其作为后台进程&运行,然后为其wait运行:

docker exec -d <docker container name> bash -c "cd root;npm install" &
wait
echo "done"

答案 2 :(得分:0)

如果省略-d(分离),docker exec仅在完成后(而不是立即)返回,因此不需要wait