我看过很多教程似乎都在做我想做的事情,但是由于某种原因,我的Docker容器退出了。基本上,我正在Docker容器内设置一个Web服务器和一些守护程序。我通过一个bash脚本(run-all.sh
在Dockerfile中通过CMD运行)完成了最后一部分。run-all.sh
看起来像这样:
service supervisor start
service nginx start
然后在Dockerfile中启动它,如下所示:
CMD ["sh", "/root/credentialize_and_run.sh"]
我可以看到,当我手动运行某些东西(即使用-i -t / bin / bash进入映像)时,所有服务都可以正确启动,并且当我运行映像时,一切看起来都可以正常运行,但是一旦退出它完成了我的流程的启动。我希望这些进程可以无限期地运行,据我所知,容器必须继续运行才能实现这一点。不过,当我跑步时docker ps -a
,我看到:
➜ docker_test docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7706edc4189 some_name/some_repo:blah "sh /root/run-all.sh 8 minutes ago Exited (0) 8 minutes ago grave_jones
是什么赋予了?为什么退出?我知道我可以在bash脚本的末尾放置一个while循环来保持它,但是什么是防止它退出的正确方法呢?