繁体   English   中英

在Docker容器中运行Cron作业

[英]Running Cron jobs inside Docker containers

我希望有一个简单的问题; 我是Docker和Linux的新手。 大多数文章/ stackoverflow帖子都建议在docker容器内安装cron以使其正常工作,如在此链接中可以看到的

但是,根据下面的图片,我们可以看到Docker Engine是HOST OS的系统库和实用程序库与应用程序容器之间的抽象层。

为什么我们不重用HOST附带的系统cron而不是在容器内部安装cron? 几乎感到多余。

我对docker的理解是,您将在自己的nodejs应用容器中安装诸如npm节点模块之类的应用程序级库和程序包,但是如果您需要cron这样的系统实用程序,那么您将以某种方式回调到HOST OS的本机cron实用程序; 那么为什么不以某种方式在我们的容器中使用主机的cron,为什么要在容器中重新安装cron?

在此处输入图片说明

最后,您会使用docker-compose代替并将separate out the cron service into its own container然后以某种方式使cron服务与应用程序容器通信并引用其环境var吗?

我的意思是在应用容器中定义环境变量 使那些可以访问cron容器的人 这样我们就可以遵循每个容器一项服务的最佳实践

如果需要,请在主机上使用cron,例如

0 0 * * * /usr/local/bin/docker run image 

据我所知,现代容器应用程序使用来自主机(eco)系统的某种形式的调度。 您可以在主机上使用cron来触发docker run命令。 您可以使用通用计划程序,例如Airflow。 您可以使用完全内置的容器平台,例如DC / OS,它带有内置的调度服务。

在容器本身中将cron与您的应用程序一起运行没有任何问题。 但是,如果从应用程序容器外部的调度服务触发应用程序容器,则该容器将在作业完成后终止,从而将任何资源释放给其他应用程序。

其次,每项服务只有一个容器是一种良好的做法。 Cron本身就是一种服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM