当前位置: 首页 > 面试题库 >

在不同主机上的Docker中运行cron的问题

丰岳
2023-03-14
问题内容

我试图让一个docker容器运行来管理我的cronjobs

我使用centOS 6.5 base在docker容器中运行了一个非常简单的cron作为测试

* * * * * /bin/echo "it works!" >> test.log

如果容器在CoreOS主机上运行,​​则可以正常工作;但是,如果我在ubuntu
13.10主机上运行容器,则不会执行cron。(尽管主机没有影响容器中正在运行的内容)

两台主机都在运行docker 0.8

我是否缺少明显的东西,或者这是一个错误?

谢谢


问题答案:

简短答案

将此行添加到您的dockerfile

RUN sed -i '/session    required   pam_loginuid.so/c\#session    required   pam_loginuid.so' /etc/pam.d/crond

长答案

据我了解,问题与CoreOS和Unbutu之间的内核差异有关。反过来会导致pam安全问题。

为了弄清楚它,我们首先需要打开cron的日志记录(因为我们不在docker中,因此不会执行正常启动)。跑

service rsyslog start
service crond restart

cron日志出现此错误(位于/ var / log / cron)

FAILED to open PAM security session (Cannot make/remove an entry for the specified session)

所以然后我看了看安全日志,它出现了这个错误(位于/ var / log / secure)

pam_loginuid(crond:session): set_loginuid failed

一些更多的谷歌搜索,发现我需要修改我的pam cond配置(在这里找到/etc/pam.d/crond)编辑此文件并注释掉以下行

#session    required   pam_loginuid.so

重新启动crond,一切都应该很好



 类似资料:
  • 问题内容: 感谢您收看这个问题。 所以我的问题与如何在docker-compose up指令上运行脚本的最佳实践有关。 目前,我正在主机和容器之间共享一个卷,以使脚本更改对主机和容器均可见。与监视脚本轮询配置文件中的更改类似。 该脚本必须根据预定义规则对主机进行更改。 所以我的问题是: 我如何才能在docker-compose up指令上甚至从服务的dockerfile上启动此脚本,以便每当容器启

  • 我想使用Docker,以便能够运行一个需要PHP5.3的旧应用程序,同时在我的主机服务器上还有我的其他网站,在主机Apache上运行。 所以我有一个网站。com,siteB。com,siteC。com运行在主机上,使用主机Apache/PHP/MySQL服务器,我有siteZ。com,安装在Docker容器中,该容器应使用容器的Apache/PHP,而不是主机MySQL服务器。 这是我想获得的架构

  • 问题内容: 我可以在主机上运行docker命令吗?我安装在Docker容器中,现在可以以某种方式在主机上使用命令(在后台使用Docker容器的aws)吗? 我的情况是这样的:我在生产主机上有数据库备份。现在我有Jenkins cron作业,它将从db容器中获取sql文件,并将其放入服务器文件夹中。现在我还希望jenkins将此备份文件上传到AWS存储上,但是在主机上我没有安装aws,也不想在主机上

  • 机器A和B之间的通信工作良好。我可以运行像或这样的命令,它会给出预期的结果: 我听说过,但还没有尝试过,但据我所知,这并不能解决我的问题。 有什么方法可以直接使用来实现这一点。解决办法可能是使用连接到远程主机,并直接从远程主机使用客户机,但我希望尽可能避免这种解决方案。 在上运行,而不是在本地计算机上运行。

  • 我有一个php脚本,想按计划运行它。我在windows上使用本地web服务器(WAMP服务器),需要一种每10分钟运行< code>my_script.php的方法。 如何在WINDOWS中的本地主机上在PHP脚本上运行cron作业?

  • 问题内容: 是否可以(直接使用命令或API)从远程主机启动容器? 假设我有两台具有不同体系结构的机器:-A是一台机器-B是一台机器 我想使用我的A机器在B机器上运行一个容器。起初,我认为可以使用以下命令: 但这个命令实际上拉图像,并试图在其中一些最终的机器运行它的原因很明显,你不能运行的图像所特有的一种机器。 机器A和B之间的通信正常。我可以运行诸如或的命令,它可以给我预期的结果: 我听说过并且还