我正在尝试在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
有人遇到过这个问题吗?如果是的话,请你指点一下吗?
提前感谢。
答案 0 :(得分:8)
LXC容器不是虚拟机。你需要在前台明确地运行cron守护进程。最好还是从Supervisor或runit等程序中运行cron。
传统上,Docker容器在运行时会运行单个进程 已启动,例如Apache守护程序或SSH服务器守护程序。经常 虽然您想在容器中运行多个进程。有 通过使用简单的Bash,您可以通过多种方式实现这一目标 script作为容器的CMD指令安装的值 流程管理工具。
在这个例子中,我们将使用流程管理 工具,主管,管理我们容器中的多个进程。运用 主管允许我们更好地控制,管理和重启 我们想要运行的流程。为了证明这一点,我们将安装 并管理SSH守护程序和Apache守护程序。
答案 1 :(得分:3)
你可以这样做:
ENTRYPOINT cron -f
虽然记住你只能有一个ENTRYPOINT。
来自docs:
Dockerfile中只能有一个ENTRYPOINT。如果你有更多 比一个ENTRYPOINT,只有Dockerfile中的最后一个 有效果。
ENTRYPOINT可帮助您配置可以运行的容器 可执行文件。也就是说,当你指定一个ENTRYPOINT,那么整个 容器就像只是那个可执行文件一样运行。