如何保持一个无限循环运行,以便在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开始的唯一事物。