当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

我试图让一个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和Linux之间的内核差异有关。温布图此in-turn导致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,一切都应该很好

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8947.html,未经允许,请勿转载。