【问题标题】:How to keep an infinite loop running in order to not close a container in docker如何保持无限循环运行以便不关闭docker中的容器
【发布时间】:2016-10-02 16:07:28
【问题描述】:

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

  while :;do 
   sleep 300
  done

docker run 期间将使其运行,但我如何编辑 Dockerfile 本身以使其保持运行?

【问题讨论】:

  • 为什么不直接守护它?

标签: docker containers dockerfile


【解决方案1】:

您可以通过将要执行的命令放入脚本中来做到这一点,并将脚本设置为 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,因此您可以使用 docker run -d 守护容器,它将保持正在运行。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多