gpt4 book ai didi

docker - 如何判断以-d运行的docker容器是否已完成其CMD的运行

转载 作者:行者123 更新时间:2023-12-02 18:33:10 25 4
gpt4 key购买 nike

我想制作一个简单的bash脚本,该脚本使用-d运行一个docker容器,然后仅在该容器完成其CMD运行时再执行其他操作。我如何在避免时序问题的同时这样做,因为Docker容器可能需要一段时间才能完成启动?

我唯一的想法是,完成后,容器的Dockerfile需要在容器本身上创建某种状态,然后bash脚本可以轮询直到状态文件在那里。有没有更好的/标准的方法来做这样的事情?

从本质上讲,我需要一种使用-d来运行docker容器的主机的方法,使其能够知道何时准备就绪。

更新

使它与拖尾日志方法一起工作,但似乎有点hacky:

  docker run -d \
--name sauceconnect \
sauceconnect

# Tail logs until 'Sauce Connect is up'
docker logs -f sauceconnect | while read LINE
do
echo "$LINE"
if [[ "$LINE" == *"Sauce Connect is up"* ]]; then
pkill -P $$ docker
fi
done

最佳答案

您应该可以通过docker logs -f <containter_name_or_ID>查看日志

-f : same as tail -f 

例如, CMD完成,然后将日志导出为 JOB ABC is successfully started

您的脚本可以在获取后检测并运行其余作业。

关于docker - 如何判断以-d运行的docker容器是否已完成其CMD的运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491000/

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