gpt4 book ai didi

linux - 在 Docker 容器中运行 Cron 作业

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:19 25 4
gpt4 key购买 nike

希望我有一个简单的问题;我是 Docker 和 Linux 的新手。大多数文章/stackoverflow 帖子建议在 docker 容器中安装 cron 以使其作为 can be seen at this link 工作。

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

为什么我们不重用主机附带的系统 cron,而是在容器内安装 cron?这几乎让人觉得多余。

我对 docker 的理解是你会在你的 nodejs 应用程序容器中安装应用程序级别的库和包,比如 npm 节点模块,但是如果你需要一个像 cron 这样的系统实用程序,那么你会以某种方式回调主机操作系统的 native cron 实用程序;那么为什么不以某种方式在我们的容器中使用 HOST 的 cron,为什么要在容器中重新安装 cron?

enter image description here

最后,您是否会使用 docker-compose 代替将 cron 服务分离到它自己的容器中 然后以某种方式让 cron 服务与应用程序容器对话并引用它的环境变量?

我的意思是应用容器中定义的环境变量;让cron 容器 可以访问它们?这样我们就可以遵循每个容器一个服务的最佳实践

最佳答案

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

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

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

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

其次,每个服务有一个容器被认为是一种很好的做法。 Cron 本身就是一项服务。

关于linux - 在 Docker 容器中运行 Cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com