如何保持一个无限循环运行,以便在Docker中closures容器
我想要保持docker容器运行,即使执行运行命令后(容器立即docker run..
我知道命令:
while :;do sleep 300 done
在docker run
期间将使其运行,但我如何编辑Dockerfile本身,以保持运行?
您可以通过将要执行的命令放入脚本中,并将该脚本设置为Docker在启动容器时运行的命令来执行此操作:
FROM sixeyed/ubuntu-with-utils RUN echo 'ping localhost &' > /bootstrap.sh RUN echo 'sleep infinity' >> /bootstrap.sh RUN chmod +x /bootstrap.sh CMD /bootstrap.sh
当你从这个Dockerfilebuild立一个图像并从图像中运行一个容器时,它将在后台启动ping
,并在前台sleep
,这样你就可以使用docker docker run -d
来对容器进行守护进程,并且它将继续运行。
这并不理想 – Docker只监视它运行容器时启动的最后一个进程,所以它将检查sleep
而不是ping
。 如果ping
命令错误,容器将继续运行。 通常,您希望真正的应用程序成为您在CMD
开始的唯一事物。