gpt4 book ai didi

bash - 在 shell 程序脚本中继续之前,如何等待 “docker exec ”完成

转载 作者:行者123 更新时间:2023-12-02 19:03:10 26 4
gpt4 key购买 nike

我有一个docker exec命令,在继续执行其余的Shell脚本之前,我想等待它完成,我该如何完成呢?

#!/bin/bash
docker exec -it debian sleep 10;

wait
echo done

更新:不应使用-it选项

#!/bin/bash
docker exec debian sleep 10;

wait
echo done

最佳答案

docker exec命令将等待,直到默认完成为止。我可以想到,docker exec在其运行的命令完成之前返回的可能原因是:

  • 您显式地告诉docker exec使用可分离标志aka -d在后台运行。
  • 您正在容器内执行的命令在其运行的进程完成之前返回,例如启动后台守护程序。在这种情况下,您需要调整正在运行的命令。

  • 这里有些例子:
    $ # launch a container to test:
    $ docker run -d --rm --name test-exec busybox tail -f /dev/null
    a218f90f941698960ee5a9750b552dad10359d91ea137868b50b4f762c293bc3

    $ # test a sleep command, works as expected
    $ time docker exec -it test-exec sleep 10

    real 0m10.356s
    user 0m0.044s
    sys 0m0.040s

    $ # test running without -it, still works
    $ time docker exec test-exec sleep 10

    real 0m10.292s
    user 0m0.040s
    sys 0m0.040s

    $ # test running that command with -d, runs in the background as requested
    $ time docker exec -itd test-exec sleep 10

    real 0m0.196s
    user 0m0.056s
    sys 0m0.024s

    $ # run a command inside the container in the background using a shell and &
    $ time docker exec -it test-exec /bin/sh -c 'sleep 10 &'

    real 0m0.289s
    user 0m0.048s
    sys 0m0.044s

    关于bash - 在 shell 程序脚本中继续之前,如何等待 “docker exec ”完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56872543/

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