如何保持无限循环运行以便不关闭docker中的容器

时间:2016-10-02 16:07:28

标签: docker containers dockerfile

我想在执行run命令后保持docker容器运行(容器在docker run..之后立即退出。我知道命令:

  while :;do 
   sleep 300
  done
docker run期间的

将使其运行,但如何编辑 Dockerfile 本身以使其保持运行?

1 个答案:

答案 0 :(得分:6)

您可以通过将要执行的命令放入脚本中,并将脚本设置为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

当你从这个Dockerfile构建一个图像并从图像中运行一个容器时,它将在后台启动ping并在前台启动sleep,这样你就可以用{{1}守护容器它将继续运行。

这不太理想 - Docker只监视它在运行容器时启动的最后一个进程,因此它将检查docker run -d而不是sleep。如果ping命令错误,容器将继续运行。通常,您希望真正的应用程序是您在ping中开始的唯一内容。