docker工人:Cronjob不工作

我正在尝试在Docker容器上运行cron作业。 我有一个正在运行的容器(Fedora 20)。 我还在容器中安装了cron包,并明确运行cron守护进程。 我也检查了cron.deny文件是空的,在/ etc /目录下没有名为cron.allow的文件。

Whenever I tried to set the cronjob by using crontab -e or trying to list the cron job using crontab -l I am getting following error. bash-4.2# crontab -l You (root) are not allowed to access to (crontab) because of pam configuration. bash-4.2# crontab -e You (root) are not allowed to access to (crontab) because of pam configuration. 

我也检查了它有以下条目的/etc/pam.d/crond文件

bash-4.2#vi /etc/pam.d/crond

 # # The PAM configuration file for the cron daemon # # # No PAM authentication called, auth modules not needed account required pam_access.so account include password-auth session required pam_loginuid.so session include password-auth auth include password-auth 

有没有人遇到这个问题? 如果是的话,请给我build议一些指针呢?

提前致谢。

LXC容器不是虚拟机。 你需要明确地在前台运行cron守护进程。 最好还是从Supervisor或runit这样的程序运行cron。

参考: Docker文档

传统上,Docker容器在启动时运行一个进程,例如Apache守护进程或SSH服务器守护进程。 通常虽然你想在一个容器中运行多个进程。 有多种方法可以实现这一目标,从使用简单的Bash脚本作为容器的CMD指令的值到安装stream程pipe理工具。

在这个例子中,我们将利用进程pipe理工具Supervisor来pipe理容器中的多个进程。 使用Supervisor可以让我们更好地控制,pipe理和重新启动我们想要运行的stream程。 为了演示这个,我们将安装和pipe理一个SSH守护进程和一个Apache守护进程。

你可以做:

入口点cron -f

尽pipe记住你只能有一个进入点。

从文档 :

Dockerfile中只能有一个入口点。 如果你有多个入口点,那么只有Dockerfile中的最后一个才会起作用。

一个ENTRYPOINT可以帮助你configuration一个你可以作为可执行文件运行的容器。 也就是说,当你指定一个入口点时,整个容器运行就好像它只是可执行文件一样。