【发布时间】:2020-07-01 21:30:51
【问题描述】:
我试图在 1 小时后自动停止 docker 容器。我的意思是,如果没有进程进行或容器空闲 1 小时,则停止该容器。这可以在 Dockfile 中以编程方式完成吗?任何想法都会有所帮助。
提前致谢。
【问题讨论】:
标签: docker nginx dockerfile
我试图在 1 小时后自动停止 docker 容器。我的意思是,如果没有进程进行或容器空闲 1 小时,则停止该容器。这可以在 Dockfile 中以编程方式完成吗?任何想法都会有所帮助。
提前致谢。
【问题讨论】:
标签: docker nginx dockerfile
Dockerfile 支持的最适合您的问题的解决方案是 HEALTHCHECK 指令,例如HEALTHCHECK [OPTIONS] CMD command 。您可以在此处指定间隔(例如 1 小时)和超时。
--interval=DURATION (default: 30s)
--timeout=DURATION (default: 30s)
--start-period=DURATION (default: 0s)
--retries=N (default: 3)
除此之外,您还必须创建由cronjob 每 1 小时触发一次的 custom shell script。在此脚本中,您将停止前台进程并停止正在运行的容器。
【讨论】:
据我所知,这样的场景不是 docker 工作流程的一部分。
只要主进程还活着,容器就一直活着。当该项目(PID:1)退出(错误或成功)时,容器也会停止。
所以我看到的唯一方法是在您的程序中构建此逻辑(容器中的主进程)或将程序包装在一个 shell 脚本中,该脚本根据某些规则终止该进程(例如某个特定的没有日志条目时间)。
【讨论】: