如何判断用-d运行的docker容器是否已经完成了CMD的运行

我想做一个简单的bash脚本,用-d运行一个docker容器,然后做一些其他的事情,当且仅当容器已经完成了CMD的运行。 我怎样才能做到这一点,避免时间问题,因为docker集装箱可能需要一段时间才能完成启动?

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

本质上,我需要一个运行Docker容器的主机的方式,使用-d可以告诉它何时准备就绪。

更新

它使用拖尾日志方法,但它似乎有点哈克:

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导出日志。

得到它后,你的脚本可以检测并运行其余的工作。